From 21e7238daacdc2629b6f79382ea87a94069a1f0d Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Fri, 9 Oct 2020 20:36:06 -0700 Subject: [PATCH] build --- javascript/example/bundle/index.js | 33 ++++++++++++++++++++++--- javascript/example/bundle/index.js.map | 2 +- javascript/example/bundle/simple.js | 33 ++++++++++++++++++++++--- javascript/example/bundle/simple.js.map | 2 +- javascript/umd/URDFLoader.js | 33 ++++++++++++++++++++++--- javascript/umd/URDFLoader.js.map | 2 +- 6 files changed, 90 insertions(+), 15 deletions(-) diff --git a/javascript/example/bundle/index.js b/javascript/example/bundle/index.js index 0fee3c44..abb55611 100644 --- a/javascript/example/bundle/index.js +++ b/javascript/example/bundle/index.js @@ -60363,10 +60363,13 @@ if (this.jointType === v) return; this._jointType = v; - + this.matrixWorldNeedsUpdate = true; switch (v) { case 'fixed': + this.jointValue = []; + break; + case 'continuous': case 'revolute': case 'prismatic': @@ -60392,6 +60395,7 @@ } constructor(...args) { + super(...args); this.isURDFJoint = true; @@ -60406,6 +60410,7 @@ this.origPosition = null; this.origQuaternion = null; + } /* Overrides */ @@ -60426,6 +60431,7 @@ this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null; return this; + } /* Public Functions */ @@ -60452,7 +60458,7 @@ let angle = values[0]; if (angle == null) return false; - if (angle === this.jointValue) return false; + if (angle === this.angle) return false; if (!this.ignoreLimits && this.jointType === 'revolute') { @@ -60484,7 +60490,7 @@ let pos = values[0]; if (pos == null) return false; - if (pos === this.jointValue) return false; + if (pos === this.angle) return false; if (!this.ignoreLimits) { @@ -60695,11 +60701,21 @@ this.parseCollision = false; this.packages = ''; this.workingPath = ''; - this.fetchOptions = null; + this.fetchOptions = {}; } /* Public API */ + loadAsync(urdf) { + + return new Promise((resolve, reject) => { + + this.load(urdf, resolve, null, reject); + + }); + + } + // urdf: The path to the URDF within the package OR absolute // onComplete: Callback that is passed the model once loaded load(urdf, onComplete, onProgress, onError) { @@ -60711,12 +60727,17 @@ const urdfPath = this.manager.resolveURL(urdf); manager.itemStart(urdfPath); + fetch(urdfPath, this.fetchOptions) .then(res => { + if (onProgress) { + onProgress(null); + } return res.text(); + }) .then(data => { @@ -60734,9 +60755,13 @@ .catch(e => { if (onError) { + onError(e); + } else { + console.error('URDFLoader: Error loading file.', e); + } manager.itemError(urdfPath); manager.itemEnd(urdfPath); diff --git a/javascript/example/bundle/index.js.map b/javascript/example/bundle/index.js.map index 993e85f8..f8c505a2 100644 --- a/javascript/example/bundle/index.js.map +++ b/javascript/example/bundle/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../node_modules/three/build/three.module.js","../src/dragAndDrop.js","../../node_modules/three/examples/jsm/loaders/STLLoader.js","../../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../node_modules/three/examples/jsm/loaders/TGALoader.js","../../node_modules/three/examples/jsm/loaders/ColladaLoader.js","../../node_modules/three/examples/jsm/loaders/OBJLoader.js","../../node_modules/three/examples/jsm/controls/OrbitControls.js","../../src/URDFClasses.js","../../src/URDFLoader.js","../../src/urdf-viewer-element.js","../../src/urdf-manipulator-element.js","../src/index.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '119';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\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 );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\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\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\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)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\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.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = RGBAFormat; // see #18859\n\tthis.texture.encoding = texture.encoding;\n\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\tthis.texture.minFilter = texture.minFilter;\n\tthis.texture.magFilter = texture.magFilter;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: /* glsl */`\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t}\n\t\t`,\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t`\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\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\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\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\";\n\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\";\n\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\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\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}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\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\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\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\";\n\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\";\n\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 vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\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)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\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)\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\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\";\n\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\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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;\";\n\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\";\n\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\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\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;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\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; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\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\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\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\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\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\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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 *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn !! extension;\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( ! this.has( name ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\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\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\t'out highp vec4 pc_fragColor;',\n\t\t\t'#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\", \"transmissionMap\"\n\t];\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\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,\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,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\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.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\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.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = [];\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t\tif ( window.XRHand ) {\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tlet joint = new Group();\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\tthis._hand.joints.push( joint );\n\t\t\t\t\t// ??\n\t\t\t\t\tthis._hand.add( joint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\n\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tlet jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\n\n\t\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t\t\t// Custom events\n\n\t\t\t\t\t\t// Check pinch\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchend\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchstart\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tvar maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material, parameters );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\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\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\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 );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\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 );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\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\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\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\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = ( tension !== undefined ) ? tension : 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\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 );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\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\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\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.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\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.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\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, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, 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, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, 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, LightShadow, 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, SpotLightShadow, 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 };\n","// Converts a datatransfer structer into an object with all paths and files\n// listed out. Returns a promise that resolves with the file structure.\nfunction dataTransferToFiles(dataTransfer) {\n\n if (!(dataTransfer instanceof DataTransfer)) {\n\n throw new Error('Data must be of type \"DataTransfer\"', dataTransfer);\n\n }\n\n const files = {};\n\n // recurse down the webkit file structure resolving\n // the paths to files names to store in the `files`\n // object\n function recurseDirectory(item) {\n\n if (item.isFile) {\n\n return new Promise(resolve => {\n item.file(file => {\n files[item.fullPath] = file;\n resolve();\n });\n });\n\n } else {\n\n const reader = item.createReader();\n\n return new Promise(resolve => {\n\n const promises = [];\n\n // exhaustively read all the directory entries\n function readNextEntries() {\n\n reader.readEntries(et => {\n\n if (et.length === 0) {\n\n Promise.all(promises).then(() => resolve());\n\n } else {\n\n et.forEach(e => {\n\n promises.push(recurseDirectory(e));\n\n });\n readNextEntries();\n\n }\n\n });\n\n }\n\n readNextEntries();\n\n });\n }\n }\n\n return new Promise(resolve => {\n\n // Traverse down the tree and add the files into the zip\n const dtitems = dataTransfer.items && [...dataTransfer.items];\n const dtfiles = [...dataTransfer.files];\n\n if (dtitems && dtitems.length && dtitems[0].webkitGetAsEntry) {\n\n const promises = [];\n for (let i = 0; i < dtitems.length; i++) {\n const item = dtitems[i];\n const entry = item.webkitGetAsEntry();\n\n promises.push(recurseDirectory(entry));\n\n }\n Promise.all(promises).then(() => resolve(files));\n\n } else {\n\n // add a '/' prefix to math the file directory entry\n // on webkit browsers\n dtfiles\n .filter(f => f.size !== 0)\n .forEach(f => files['/' + f.name] = f);\n\n resolve(files);\n\n }\n });\n}\nexport function registerDragEvents(viewer, callback) {\n\n document.addEventListener('dragover', e => e.preventDefault());\n document.addEventListener('dragenter', e => e.preventDefault());\n document.addEventListener('drop', e => {\n\n e.preventDefault();\n\n // convert the files\n dataTransferToFiles(e.dataTransfer)\n .then(files => {\n\n // removes '..' and '.' tokens and normalizes slashes\n const cleanFilePath = path => {\n\n return path\n .replace(/\\\\/g, '/')\n .split(/\\//g)\n .reduce((acc, el) => {\n\n if (el === '..') acc.pop();\n else if (el !== '.') acc.push(el);\n return acc;\n\n }, [])\n .join('/');\n\n };\n\n // set the loader url modifier to check the list\n // of files\n const fileNames = Object.keys(files).map(n => cleanFilePath(n));\n viewer.urlModifierFunc = url => {\n\n // find the matching file given the requested url\n const cleaned = cleanFilePath(url.replace(viewer.package, ''));\n const fileName = fileNames\n .filter(name => {\n\n // check if the end of file and url are the same\n const len = Math.min(name.length, cleaned.length);\n return cleaned.substr(cleaned.length - len) === name.substr(name.length - len);\n\n }).pop();\n\n if (fileName !== undefined) {\n\n // revoke the url after it's been used\n const bloburl = URL.createObjectURL(files[fileName]);\n requestAnimationFrame(() => URL.revokeObjectURL(bloburl));\n\n return bloburl;\n\n }\n\n return url;\n\n };\n\n // set the source of the element to the most likely intended display model\n const filesNames = Object.keys(files);\n viewer.up = '+Z';\n document.getElementById('up-select').value = viewer.up;\n\n viewer.urdf =\n filesNames\n .filter(n => /urdf$/i.test(n))\n .shift();\n\n });\n\n callback();\n });\n\n}\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tLoaderUtils,\n\tVector3\n} from \"../../../build/three.module.js\";\n/**\n * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files, with automatic detection of type.\n *\n * The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n * Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n * There is perhaps some question as to how valid it is to always assume little-endian-ness.\n * ASCII decoding assumes file is UTF-8.\n *\n * Usage:\n * var loader = new STLLoader();\n * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) {\n * scene.add( new THREE.Mesh( geometry ) );\n * });\n *\n * For binary STLs geometry might contain colors for vertices. To use it:\n * // use the same code to load STL as above\n * if (geometry.hasColors) {\n * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true });\n * } else { .... }\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For example:\n *\n * var materials = [];\n * var nGeometryGroups = geometry.groups.length;\n *\n * var colorMap = ...; // Some logic to index colors.\n *\n * for (var i = 0; i < nGeometryGroups; i++) {\n *\n *\t\tvar material = new THREE.MeshPhongMaterial({\n *\t\t\tcolor: colorMap[i],\n *\t\t\twireframe: false\n *\t\t});\n *\n * }\n *\n * materials.push(material);\n * var mesh = new THREE.Mesh(geometry, materials);\n */\n\n\nvar STLLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nSTLLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: STLLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tvar expect, face_size, n_faces, reader;\n\t\t\treader = new DataView( data );\n\t\t\tface_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tn_faces = reader.getUint32( 80, true );\n\t\t\texpect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful. So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tvar solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( var off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( var i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tvar reader = new DataView( data );\n\t\t\tvar faces = reader.getUint32( 80, true );\n\n\t\t\tvar r, g, b, hasColors = false, colors;\n\t\t\tvar defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( var index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar dataOffset = 84;\n\t\t\tvar faceLength = 12 * 4 + 2;\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tvar normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tfor ( var face = 0; face < faces; face ++ ) {\n\n\t\t\t\tvar start = dataOffset + face * faceLength;\n\t\t\t\tvar normalX = reader.getFloat32( start, true );\n\t\t\t\tvar normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tvar normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tvar packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tvar vertexstart = start + i * 12;\n\t\t\t\t\tvar componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolors[ componentIdx ] = r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\t\t\tvar patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tvar patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tvar faceCounter = 0;\n\n\t\t\tvar patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tvar patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tvar patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tvar vertices = [];\n\t\t\tvar normals = [];\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar result;\n\n\t\t\tvar groupCount = 0;\n\t\t\tvar startVertex = 0;\n\t\t\tvar endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tvar solid = result[ 0 ];\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tvar vertexCountPerFace = 0;\n\t\t\t\t\tvar normalCountPerFace = 0;\n\n\t\t\t\t\tvar text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tvar start = startVertex;\n\t\t\t\tvar count = endVertex - startVertex;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn LoaderUtils.decodeText( new Uint8Array( buffer ) );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tvar array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( var i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tvar binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n} );\n\nexport { STLLoader };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\t\tthis.ktx2Loader = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\n\n\t\t\tthis.ktx2Loader = ktx2Loader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager,\n\t\t\t\tktx2Loader: this.ktx2Loader\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Transmission Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n\t */\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * BasisU Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n\t * (draft PR https://github.com/KhronosGroup/glTF/pull/1751)\n\t */\n\tfunction GLTFTextureBasisUExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ this.name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype._markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.lightCache, nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t};\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tvar ref = object.clone();\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tpending.push( func( extensions[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar loader;\n\n\t\tif ( source.uri ) {\n\n\t\t\tloader = options.manager.getHandler( source.uri );\n\n\t\t}\n\n\t\tif ( ! loader ) {\n\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t: this.textureLoader;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\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\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\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\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.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\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.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tvar lightIndex = nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light;\n\n\t\t\t\tpending.push( parser.getDependency( 'light', lightIndex ).then( function ( light ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.lightCache, lightIndex, light );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","import {\n\tFileLoader,\n\tLoader,\n\tTexture\n} from \"../../../build/three.module.js\";\n\nvar TGALoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nTGALoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TGALoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttexture.image = scope.parse( buffer );\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tparse: function ( buffer ) {\n\n\t\t// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js\n\n\t\tfunction tgaCheckHeader( header ) {\n\n\t\t\tswitch ( header.image_type ) {\n\n\t\t\t\t// check indexed type\n\n\t\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\t\tif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// check colormap type\n\n\t\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\t\tif ( header.colormap_type ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// What the need of a file without data ?\n\n\t\t\t\tcase TGA_TYPE_NO_DATA:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t\t\t\t// Invalid type ?\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type \"%s\".', header.image_type );\n\n\t\t\t}\n\n\t\t\t// check image width and height\n\n\t\t\tif ( header.width <= 0 || header.height <= 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid image size.' );\n\n\t\t\t}\n\n\t\t\t// check image pixel size\n\n\t\t\tif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&\n\t\t\t\theader.pixel_size !== 24 && header.pixel_size !== 32 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid pixel size \"%s\".', header.pixel_size );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// parse tga image buffer\n\n\t\tfunction tgaParse( use_rle, use_pal, header, offset, data ) {\n\n\t\t\tvar pixel_data,\n\t\t\t\tpixel_size,\n\t\t\t\tpixel_total,\n\t\t\t\tpalettes;\n\n\t\t\tpixel_size = header.pixel_size >> 3;\n\t\t\tpixel_total = header.width * header.height * pixel_size;\n\n\t\t\t // read palettes\n\n\t\t\t if ( use_pal ) {\n\n\t\t\t\t palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );\n\n\t\t\t }\n\n\t\t\t // read RLE\n\n\t\t\t if ( use_rle ) {\n\n\t\t\t\t pixel_data = new Uint8Array( pixel_total );\n\n\t\t\t\tvar c, count, i;\n\t\t\t\tvar shift = 0;\n\t\t\t\tvar pixels = new Uint8Array( pixel_size );\n\n\t\t\t\twhile ( shift < pixel_total ) {\n\n\t\t\t\t\tc = data[ offset ++ ];\n\t\t\t\t\tcount = ( c & 0x7f ) + 1;\n\n\t\t\t\t\t// RLE pixels\n\n\t\t\t\t\tif ( c & 0x80 ) {\n\n\t\t\t\t\t\t// bind pixel tmp array\n\n\t\t\t\t\t\tfor ( i = 0; i < pixel_size; ++ i ) {\n\n\t\t\t\t\t\t\tpixels[ i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// copy pixel array\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data.set( pixels, shift + i * pixel_size );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += pixel_size * count;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// raw pixels\n\n\t\t\t\t\t\tcount *= pixel_size;\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data[ shift + i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += count;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t } else {\n\n\t\t\t\t// raw pixels\n\n\t\t\t\tpixel_data = data.subarray(\n\t\t\t\t\t offset, offset += ( use_pal ? header.width * header.height : pixel_total )\n\t\t\t\t);\n\n\t\t\t }\n\n\t\t\t return {\n\t\t\t\tpixel_data: pixel_data,\n\t\t\t\tpalettes: palettes\n\t\t\t };\n\n\t\t}\n\n\t\tfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {\n\n\t\t\tvar colormap = palettes;\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\tcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 ); // Inversed ?\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) >> 3;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction getTgaRGBA( data, width, height, image, palette ) {\n\n\t\t\tvar x_start,\n\t\t\t\ty_start,\n\t\t\t\tx_step,\n\t\t\t\ty_step,\n\t\t\t\tx_end,\n\t\t\t\ty_end;\n\n\t\t\tswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {\n\n\t\t\t\tdefault:\n\t\t\t\tcase TGA_ORIGIN_UL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_UR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( use_grey ) {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 24:\n\t\t\t\t\t\ttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\ttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Load image data according to specific method\n\t\t\t// var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';\n\t\t\t// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// TGA constants\n\n\t\tvar TGA_TYPE_NO_DATA = 0,\n\t\t\tTGA_TYPE_INDEXED = 1,\n\t\t\tTGA_TYPE_RGB = 2,\n\t\t\tTGA_TYPE_GREY = 3,\n\t\t\tTGA_TYPE_RLE_INDEXED = 9,\n\t\t\tTGA_TYPE_RLE_RGB = 10,\n\t\t\tTGA_TYPE_RLE_GREY = 11,\n\n\t\t\tTGA_ORIGIN_MASK = 0x30,\n\t\t\tTGA_ORIGIN_SHIFT = 0x04,\n\t\t\tTGA_ORIGIN_BL = 0x00,\n\t\t\tTGA_ORIGIN_BR = 0x01,\n\t\t\tTGA_ORIGIN_UL = 0x02,\n\t\t\tTGA_ORIGIN_UR = 0x03;\n\n\t\tif ( buffer.length < 19 ) console.error( 'THREE.TGALoader: Not enough data to contain header.' );\n\n\t\tvar content = new Uint8Array( buffer ),\n\t\t\toffset = 0,\n\t\t\theader = {\n\t\t\t\tid_length: content[ offset ++ ],\n\t\t\t\tcolormap_type: content[ offset ++ ],\n\t\t\t\timage_type: content[ offset ++ ],\n\t\t\t\tcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_size: content[ offset ++ ],\n\t\t\t\torigin: [\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8\n\t\t\t\t],\n\t\t\t\twidth: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\theight: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tpixel_size: content[ offset ++ ],\n\t\t\t\tflags: content[ offset ++ ]\n\t\t\t};\n\n\t\t// check tga if it is valid format\n\n\t\ttgaCheckHeader( header );\n\n\t\tif ( header.id_length + offset > buffer.length ) {\n\n\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t}\n\n\t\t// skip the needn't data\n\n\t\toffset += header.id_length;\n\n\t\t// get targa information about RLE compression and palette\n\n\t\tvar use_rle = false,\n\t\t\tuse_pal = false,\n\t\t\tuse_grey = false;\n\n\t\tswitch ( header.image_type ) {\n\n\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tuse_rle = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t//\n\n\t\tvar useOffscreen = typeof OffscreenCanvas !== 'undefined';\n\n\t\tvar canvas = useOffscreen ? new OffscreenCanvas( header.width, header.height ) : document.createElement( 'canvas' );\n\t\tcanvas.width = header.width;\n\t\tcanvas.height = header.height;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tvar imageData = context.createImageData( header.width, header.height );\n\n\t\tvar result = tgaParse( use_rle, use_pal, header, offset, content );\n\t\tgetTgaRGBA( imageData.data, header.width, header.height, result.pixel_data, result.palettes );\n\n\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\treturn useOffscreen ? canvas.transferToImageBitmap() : canvas;\n\n\t}\n\n} );\n\nexport { TGALoader };\n","import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTextureLoader,\n\tVector3,\n\tVectorKeyframeTrack\n} from \"../../../build/three.module.js\";\nimport { TGALoader } from \"../loaders/TGALoader.js\";\n\nvar ColladaLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nColladaLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ColladaLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\toptions: {\n\n\t\tset convertUpAxis( value ) {\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.' );\n\n\t\t}\n\n\t},\n\n\tparse: function ( text, path ) {\n\n\t\tfunction getElementsByTagName( xml, name ) {\n\n\t\t\t// Non recursive xml.getElementsByTagName() ...\n\n\t\t\tvar array = [];\n\t\t\tvar childNodes = xml.childNodes;\n\n\t\t\tfor ( var i = 0, l = childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = childNodes[ i ];\n\n\t\t\t\tif ( child.nodeName === name ) {\n\n\t\t\t\t\tarray.push( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseStrings( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parts[ i ];\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseFloats( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseFloat( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseInts( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseInt( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseId( text ) {\n\n\t\t\treturn text.substring( 1 );\n\n\t\t}\n\n\t\tfunction generateId() {\n\n\t\t\treturn 'three_default_' + ( count ++ );\n\n\t\t}\n\n\t\tfunction isEmpty( object ) {\n\n\t\t\treturn Object.keys( object ).length === 0;\n\n\t\t}\n\n\t\t// asset\n\n\t\tfunction parseAsset( xml ) {\n\n\t\t\treturn {\n\t\t\t\tunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),\n\t\t\t\tupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseAssetUnit( xml ) {\n\n\t\t\tif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {\n\n\t\t\t\treturn parseFloat( xml.getAttribute( 'meter' ) );\n\n\t\t\t} else {\n\n\t\t\t\treturn 1; // default 1 meter\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAssetUpAxis( xml ) {\n\n\t\t\treturn xml !== undefined ? xml.textContent : 'Y_UP';\n\n\t\t}\n\n\t\t// library\n\n\t\tfunction parseLibrary( xml, libraryName, nodeName, parser ) {\n\n\t\t\tvar library = getElementsByTagName( xml, libraryName )[ 0 ];\n\n\t\t\tif ( library !== undefined ) {\n\n\t\t\t\tvar elements = getElementsByTagName( library, nodeName );\n\n\t\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\t\tparser( elements[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildLibrary( data, builder ) {\n\n\t\t\tfor ( var name in data ) {\n\n\t\t\t\tvar object = data[ name ];\n\t\t\t\tobject.build = builder( data[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// get\n\n\t\tfunction getBuild( data, builder ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\tdata.build = builder( data );\n\n\t\t\treturn data.build;\n\n\t\t}\n\n\t\t// animation\n\n\t\tfunction parseAnimation( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {},\n\t\t\t\tsamplers: {},\n\t\t\t\tchannels: {}\n\t\t\t};\n\n\t\t\tvar hasChildren = false;\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.samplers[ id ] = parseAnimationSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'channel':\n\t\t\t\t\t\tid = child.getAttribute( 'target' );\n\t\t\t\t\t\tdata.channels[ id ] = parseAnimationChannel( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'animation':\n\t\t\t\t\t\t// hierarchy of related animations\n\t\t\t\t\t\tparseAnimation( child );\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasChildren === false ) {\n\n\t\t\t\t// since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment\n\n\t\t\t\tlibrary.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimationSampler( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {},\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseAnimationChannel( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tvar target = xml.getAttribute( 'target' );\n\n\t\t\t// parsing SID Addressing Syntax\n\n\t\t\tvar parts = target.split( '/' );\n\n\t\t\tvar id = parts.shift();\n\t\t\tvar sid = parts.shift();\n\n\t\t\t// check selection syntax\n\n\t\t\tvar arraySyntax = ( sid.indexOf( '(' ) !== - 1 );\n\t\t\tvar memberSyntax = ( sid.indexOf( '.' ) !== - 1 );\n\n\t\t\tif ( memberSyntax ) {\n\n\t\t\t\t// member selection access\n\n\t\t\t\tparts = sid.split( '.' );\n\t\t\t\tsid = parts.shift();\n\t\t\t\tdata.member = parts.shift();\n\n\t\t\t} else if ( arraySyntax ) {\n\n\t\t\t\t// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.\n\n\t\t\t\tvar indices = sid.split( '(' );\n\t\t\t\tsid = indices.shift();\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i ++ ) {\n\n\t\t\t\t\tindices[ i ] = parseInt( indices[ i ].replace( /\\)/, '' ) );\n\n\t\t\t\t}\n\n\t\t\t\tdata.indices = indices;\n\n\t\t\t}\n\n\t\t\tdata.id = id;\n\t\t\tdata.sid = sid;\n\n\t\t\tdata.arraySyntax = arraySyntax;\n\t\t\tdata.memberSyntax = memberSyntax;\n\n\t\t\tdata.sampler = parseId( xml.getAttribute( 'source' ) );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildAnimation( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar channels = data.channels;\n\t\t\tvar samplers = data.samplers;\n\t\t\tvar sources = data.sources;\n\n\t\t\tfor ( var target in channels ) {\n\n\t\t\t\tif ( channels.hasOwnProperty( target ) ) {\n\n\t\t\t\t\tvar channel = channels[ target ];\n\t\t\t\t\tvar sampler = samplers[ channel.sampler ];\n\n\t\t\t\t\tvar inputId = sampler.inputs.INPUT;\n\t\t\t\t\tvar outputId = sampler.inputs.OUTPUT;\n\n\t\t\t\t\tvar inputSource = sources[ inputId ];\n\t\t\t\t\tvar outputSource = sources[ outputId ];\n\n\t\t\t\t\tvar animation = buildAnimationChannel( channel, inputSource, outputSource );\n\n\t\t\t\t\tcreateKeyframeTracks( animation, tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction getAnimation( id ) {\n\n\t\t\treturn getBuild( library.animations[ id ], buildAnimation );\n\n\t\t}\n\n\t\tfunction buildAnimationChannel( channel, inputSource, outputSource ) {\n\n\t\t\tvar node = library.nodes[ channel.id ];\n\t\t\tvar object3D = getNode( node.id );\n\n\t\t\tvar transform = node.transforms[ channel.sid ];\n\t\t\tvar defaultMatrix = node.matrix.clone().transpose();\n\n\t\t\tvar time, stride;\n\t\t\tvar i, il, j, jl;\n\n\t\t\tvar data = {};\n\n\t\t\t// the collada spec allows the animation of data in various ways.\n\t\t\t// depending on the transform type (matrix, translate, rotate, scale), we execute different logic\n\n\t\t\tswitch ( transform ) {\n\n\t\t\t\tcase 'matrix':\n\n\t\t\t\t\tfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\ttime = inputSource.array[ i ];\n\t\t\t\t\t\tstride = i * outputSource.stride;\n\n\t\t\t\t\t\tif ( data[ time ] === undefined ) data[ time ] = {};\n\n\t\t\t\t\t\tif ( channel.arraySyntax === true ) {\n\n\t\t\t\t\t\t\tvar value = outputSource.array[ stride ];\n\t\t\t\t\t\t\tvar index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];\n\n\t\t\t\t\t\t\tdata[ time ][ index ] = value;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tdata[ time ][ j ] = outputSource.array[ stride + j ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'scale':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tvar keyframes = prepareAnimationData( data, defaultMatrix );\n\n\t\t\tvar animation = {\n\t\t\t\tname: object3D.uuid,\n\t\t\t\tkeyframes: keyframes\n\t\t\t};\n\n\t\t\treturn animation;\n\n\t\t}\n\n\t\tfunction prepareAnimationData( data, defaultMatrix ) {\n\n\t\t\tvar keyframes = [];\n\n\t\t\t// transfer data into a sortable array\n\n\t\t\tfor ( var time in data ) {\n\n\t\t\t\tkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );\n\n\t\t\t}\n\n\t\t\t// ensure keyframes are sorted by time\n\n\t\t\tkeyframes.sort( ascending );\n\n\t\t\t// now we clean up all animation data, so we can use them for keyframe tracks\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\ttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );\n\n\t\t\t}\n\n\t\t\treturn keyframes;\n\n\t\t\t// array sort function\n\n\t\t\tfunction ascending( a, b ) {\n\n\t\t\t\treturn a.time - b.time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\tfunction createKeyframeTracks( animation, tracks ) {\n\n\t\t\tvar keyframes = animation.keyframes;\n\t\t\tvar name = animation.name;\n\n\t\t\tvar times = [];\n\t\t\tvar positionData = [];\n\t\t\tvar quaternionData = [];\n\t\t\tvar scaleData = [];\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tvar time = keyframe.time;\n\t\t\t\tvar value = keyframe.value;\n\n\t\t\t\tmatrix.fromArray( value ).transpose();\n\t\t\t\tmatrix.decompose( position, quaternion, scale );\n\n\t\t\t\ttimes.push( time );\n\t\t\t\tpositionData.push( position.x, position.y, position.z );\n\t\t\t\tquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );\n\t\t\t\tscaleData.push( scale.x, scale.y, scale.z );\n\n\t\t\t}\n\n\t\t\tif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );\n\t\t\tif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );\n\t\t\tif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction transformAnimationData( keyframes, property, defaultValue ) {\n\n\t\t\tvar keyframe;\n\n\t\t\tvar empty = true;\n\t\t\tvar i, l;\n\n\t\t\t// check, if values of a property are missing in our keyframes\n\n\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === undefined ) {\n\n\t\t\t\t\tkeyframe.value[ property ] = null; // mark as missing\n\n\t\t\t\t} else {\n\n\t\t\t\t\tempty = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( empty === true ) {\n\n\t\t\t\t// no values at all, so we set a default value\n\n\t\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\t\tkeyframe.value[ property ] = defaultValue;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// filling gaps\n\n\t\t\t\tcreateMissingKeyframes( keyframes, property );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createMissingKeyframes( keyframes, property ) {\n\n\t\t\tvar prev, next;\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === null ) {\n\n\t\t\t\t\tprev = getPrev( keyframes, i, property );\n\t\t\t\t\tnext = getNext( keyframes, i, property );\n\n\t\t\t\t\tif ( prev === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = next.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( next === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = prev.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinterpolate( keyframe, prev, next, property );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getPrev( keyframes, i, property ) {\n\n\t\t\twhile ( i >= 0 ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti --;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction getNext( keyframes, i, property ) {\n\n\t\t\twhile ( i < keyframes.length ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction interpolate( key, prev, next, property ) {\n\n\t\t\tif ( ( next.time - prev.time ) === 0 ) {\n\n\t\t\t\tkey.value[ property ] = prev.value[ property ];\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];\n\n\t\t}\n\n\t\t// animation clips\n\n\t\tfunction parseAnimationClip( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'id' ) || 'default',\n\t\t\t\tstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),\n\t\t\t\tend: parseFloat( xml.getAttribute( 'end' ) || 0 ),\n\t\t\t\tanimations: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_animation':\n\t\t\t\t\t\tdata.animations.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.clips[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildAnimationClip( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar name = data.name;\n\t\t\tvar duration = ( data.end - data.start ) || - 1;\n\t\t\tvar animations = data.animations;\n\n\t\t\tfor ( var i = 0, il = animations.length; i < il; i ++ ) {\n\n\t\t\t\tvar animationTracks = getAnimation( animations[ i ] );\n\n\t\t\t\tfor ( var j = 0, jl = animationTracks.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttracks.push( animationTracks[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, duration, tracks );\n\n\t\t}\n\n\t\tfunction getAnimationClip( id ) {\n\n\t\t\treturn getBuild( library.clips[ id ], buildAnimationClip );\n\n\t\t}\n\n\t\t// controller\n\n\t\tfunction parseController( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'skin':\n\t\t\t\t\t\t// there is exactly one skin per controller\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.skin = parseSkin( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'morph':\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSkin( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_shape_matrix':\n\t\t\t\t\t\tdata.bindShapeMatrix = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tvar id = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'joints':\n\t\t\t\t\t\tdata.joints = parseJoints( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertex_weights':\n\t\t\t\t\t\tdata.vertexWeights = parseVertexWeights( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseJoints( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseVertexWeights( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = { id: id, offset: offset };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tdata.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v':\n\t\t\t\t\t\tdata.v = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildController( data ) {\n\n\t\t\tvar build = {\n\t\t\t\tid: data.id\n\t\t\t};\n\n\t\t\tvar geometry = library.geometries[ build.id ];\n\n\t\t\tif ( data.skin !== undefined ) {\n\n\t\t\t\tbuild.skin = buildSkin( data.skin );\n\n\t\t\t\t// we enhance the 'sources' property of the corresponding geometry with our skin data\n\n\t\t\t\tgeometry.sources.skinIndices = build.skin.indices;\n\t\t\t\tgeometry.sources.skinWeights = build.skin.weights;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildSkin( data ) {\n\n\t\t\tvar BONE_LIMIT = 4;\n\n\t\t\tvar build = {\n\t\t\t\tjoints: [], // this must be an array to preserve the joint order\n\t\t\t\tindices: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t},\n\t\t\t\tweights: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertexWeights = data.vertexWeights;\n\n\t\t\tvar vcount = vertexWeights.vcount;\n\t\t\tvar v = vertexWeights.v;\n\t\t\tvar jointOffset = vertexWeights.inputs.JOINT.offset;\n\t\t\tvar weightOffset = vertexWeights.inputs.WEIGHT.offset;\n\n\t\t\tvar jointSource = data.sources[ data.joints.inputs.JOINT ];\n\t\t\tvar inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];\n\n\t\t\tvar weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;\n\t\t\tvar stride = 0;\n\n\t\t\tvar i, j, l;\n\n\t\t\t// procces skin data for each vertex\n\n\t\t\tfor ( i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\tvar jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex\n\t\t\t\tvar vertexSkinData = [];\n\n\t\t\t\tfor ( j = 0; j < jointCount; j ++ ) {\n\n\t\t\t\t\tvar skinIndex = v[ stride + jointOffset ];\n\t\t\t\t\tvar weightId = v[ stride + weightOffset ];\n\t\t\t\t\tvar skinWeight = weights[ weightId ];\n\n\t\t\t\t\tvertexSkinData.push( { index: skinIndex, weight: skinWeight } );\n\n\t\t\t\t\tstride += 2;\n\n\t\t\t\t}\n\n\t\t\t\t// we sort the joints in descending order based on the weights.\n\t\t\t\t// this ensures, we only procced the most important joints of the vertex\n\n\t\t\t\tvertexSkinData.sort( descending );\n\n\t\t\t\t// now we provide for each vertex a set of four index and weight values.\n\t\t\t\t// the order of the skin data matches the order of vertices\n\n\t\t\t\tfor ( j = 0; j < BONE_LIMIT; j ++ ) {\n\n\t\t\t\t\tvar d = vertexSkinData[ j ];\n\n\t\t\t\t\tif ( d !== undefined ) {\n\n\t\t\t\t\t\tbuild.indices.array.push( d.index );\n\t\t\t\t\t\tbuild.weights.array.push( d.weight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbuild.indices.array.push( 0 );\n\t\t\t\t\t\tbuild.weights.array.push( 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup bind matrix\n\n\t\t\tif ( data.bindShapeMatrix ) {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();\n\n\t\t\t} else {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().identity();\n\n\t\t\t}\n\n\t\t\t// process bones and inverse bind matrix data\n\n\t\t\tfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {\n\n\t\t\t\tvar name = jointSource.array[ i ];\n\t\t\t\tvar boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();\n\n\t\t\t\tbuild.joints.push( { name: name, boneInverse: boneInverse } );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t\t// array sort function\n\n\t\t\tfunction descending( a, b ) {\n\n\t\t\t\treturn b.weight - a.weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getController( id ) {\n\n\t\t\treturn getBuild( library.controllers[ id ], buildController );\n\n\t\t}\n\n\t\t// image\n\n\t\tfunction parseImage( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent\n\t\t\t};\n\n\t\t\tlibrary.images[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildImage( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data.init_from;\n\n\t\t}\n\n\t\tfunction getImage( id ) {\n\n\t\t\tvar data = library.images[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildImage );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find image with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// effect\n\n\t\tfunction parseEffect( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'profile_COMMON':\n\t\t\t\t\t\tdata.profile = parseEffectProfileCOMMON( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.effects[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseEffectProfileCOMMON( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsurfaces: {},\n\t\t\t\tsamplers: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'newparam':\n\t\t\t\t\t\tparseEffectNewparam( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectNewparam( xml, data ) {\n\n\t\t\tvar sid = xml.getAttribute( 'sid' );\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'surface':\n\t\t\t\t\t\tdata.surfaces[ sid ] = parseEffectSurface( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler2D':\n\t\t\t\t\t\tdata.samplers[ sid ] = parseEffectSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectSurface( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'init_from':\n\t\t\t\t\t\tdata.init_from = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectSampler( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.source = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'constant':\n\t\t\t\t\tcase 'lambert':\n\t\t\t\t\tcase 'blinn':\n\t\t\t\t\tcase 'phong':\n\t\t\t\t\t\tdata.type = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseEffectParameters( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectParameter( child );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tdata[ child.nodeName ] = {\n\t\t\t\t\t\t\topaque: child.getAttribute( 'opaque' ),\n\t\t\t\t\t\t\tdata: parseEffectParameter( child )\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameter( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'float':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTexture( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttechnique: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tparseEffectParameterTextureExtra( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtra( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tparseEffectParameterTextureExtraTechnique( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtraTechnique( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'repeatU':\n\t\t\t\t\tcase 'repeatV':\n\t\t\t\t\tcase 'offsetU':\n\t\t\t\t\tcase 'offsetV':\n\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'wrapU':\n\t\t\t\t\tcase 'wrapV':\n\n\t\t\t\t\t\t// some files have values for wrapU/wrapV which become NaN via parseInt\n\n\t\t\t\t\t\tif ( child.textContent.toUpperCase() === 'TRUE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 1;\n\n\t\t\t\t\t\t} else if ( child.textContent.toUpperCase() === 'FALSE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseInt( child.textContent );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectExtra( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectExtraTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseInt( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildEffect( data ) {\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getEffect( id ) {\n\n\t\t\treturn getBuild( library.effects[ id ], buildEffect );\n\n\t\t}\n\n\t\t// material\n\n\t\tfunction parseMaterial( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_effect':\n\t\t\t\t\t\tdata.url = parseId( child.getAttribute( 'url' ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.materials[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction getTextureLoader( image ) {\n\n\t\t\tvar loader;\n\n\t\t\tvar extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/\n\t\t\textension = extension.toLowerCase();\n\n\t\t\tswitch ( extension ) {\n\n\t\t\t\tcase 'tga':\n\t\t\t\t\tloader = tgaLoader;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tloader = textureLoader;\n\n\t\t\t}\n\n\t\t\treturn loader;\n\n\t\t}\n\n\t\tfunction buildMaterial( data ) {\n\n\t\t\tvar effect = getEffect( data.url );\n\t\t\tvar technique = effect.profile.technique;\n\t\t\tvar extra = effect.profile.extra;\n\n\t\t\tvar material;\n\n\t\t\tswitch ( technique.type ) {\n\n\t\t\t\tcase 'phong':\n\t\t\t\tcase 'blinn':\n\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lambert':\n\t\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmaterial = new MeshBasicMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tmaterial.name = data.name || '';\n\n\t\t\tfunction getTexture( textureObject ) {\n\n\t\t\t\tvar sampler = effect.profile.samplers[ textureObject.id ];\n\t\t\t\tvar image = null;\n\n\t\t\t\t// get image\n\n\t\t\t\tif ( sampler !== undefined ) {\n\n\t\t\t\t\tvar surface = effect.profile.surfaces[ sampler.source ];\n\t\t\t\t\timage = getImage( surface.init_from );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );\n\t\t\t\t\timage = getImage( textureObject.id );\n\n\t\t\t\t}\n\n\t\t\t\t// create texture if image is avaiable\n\n\t\t\t\tif ( image !== null ) {\n\n\t\t\t\t\tvar loader = getTextureLoader( image );\n\n\t\t\t\t\tif ( loader !== undefined ) {\n\n\t\t\t\t\t\tvar texture = loader.load( image );\n\n\t\t\t\t\t\tvar extra = textureObject.extra;\n\n\t\t\t\t\t\tif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {\n\n\t\t\t\t\t\t\tvar technique = extra.technique;\n\n\t\t\t\t\t\t\ttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\t\t\t\t\t\ttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );\n\t\t\t\t\t\t\ttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttexture.wrapS = RepeatWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t create texture with ID:', textureObject.id );\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parameters = technique.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvar parameter = parameters[ key ];\n\n\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\t\tif ( parameter.color ) material.color.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.map = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\t\tif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tif ( parameter.texture ) material.lightMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tif ( parameter.float && material.shininess ) material.shininess = parameter.float;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\t\tif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar transparent = parameters[ 'transparent' ];\n\t\t\tvar transparency = parameters[ 'transparency' ];\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparency === undefined && transparent ) {\n\n\t\t\t\ttransparency = {\n\t\t\t\t\tfloat: 1\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparent === undefined && transparency ) {\n\n\t\t\t\ttransparent = {\n\t\t\t\t\topaque: 'A_ONE',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcolor: [ 1, 1, 1, 1 ]\n\t\t\t\t\t} };\n\n\t\t\t}\n\n\t\t\tif ( transparent && transparency ) {\n\n\t\t\t\t// handle case if a texture exists but no color\n\n\t\t\t\tif ( transparent.data.texture ) {\n\n\t\t\t\t\t// we do not set an alpha map (see #13792)\n\n\t\t\t\t\tmaterial.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = transparent.data.color;\n\n\t\t\t\t\tswitch ( transparent.opaque ) {\n\n\t\t\t\t\t\tcase 'A_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 3 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'A_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 0 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.', transparent.opaque );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.opacity < 1 ) material.transparent = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction getMaterial( id ) {\n\n\t\t\treturn getBuild( library.materials[ id ], buildMaterial );\n\n\t\t}\n\n\t\t// camera\n\n\t\tfunction parseCamera( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'optics':\n\t\t\t\t\t\tdata.optics = parseCameraOptics( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseCameraOptics( xml ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\treturn parseCameraTechnique( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {};\n\n\t\t}\n\n\t\tfunction parseCameraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'perspective':\n\t\t\t\t\tcase 'orthographic':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseCameraParameters( child );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseCameraParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'xfov':\n\t\t\t\t\tcase 'yfov':\n\t\t\t\t\tcase 'xmag':\n\t\t\t\t\tcase 'ymag':\n\t\t\t\t\tcase 'znear':\n\t\t\t\t\tcase 'zfar':\n\t\t\t\t\tcase 'aspect_ratio':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildCamera( data ) {\n\n\t\t\tvar camera;\n\n\t\t\tswitch ( data.optics.technique ) {\n\n\t\t\t\tcase 'perspective':\n\t\t\t\t\tcamera = new PerspectiveCamera(\n\t\t\t\t\t\tdata.optics.parameters.yfov,\n\t\t\t\t\t\tdata.optics.parameters.aspect_ratio,\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'orthographic':\n\t\t\t\t\tvar ymag = data.optics.parameters.ymag;\n\t\t\t\t\tvar xmag = data.optics.parameters.xmag;\n\t\t\t\t\tvar aspectRatio = data.optics.parameters.aspect_ratio;\n\n\t\t\t\t\txmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;\n\t\t\t\t\tymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;\n\n\t\t\t\t\txmag *= 0.5;\n\t\t\t\t\tymag *= 0.5;\n\n\t\t\t\t\tcamera = new OrthographicCamera(\n\t\t\t\t\t\t- xmag, xmag, ymag, - ymag, // left, right, top, bottom\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcamera.name = data.name || '';\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tfunction getCamera( id ) {\n\n\t\t\tvar data = library.cameras[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildCamera );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find camera with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// light\n\n\t\tfunction parseLight( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tdata = parseLightTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.lights[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseLightTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\tcase 'point':\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\tcase 'ambient':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseLightParameters( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseLightParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.color = new Color().fromArray( array );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'falloff_angle':\n\t\t\t\t\t\tdata.falloffAngle = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'quadratic_attenuation':\n\t\t\t\t\t\tvar f = parseFloat( child.textContent );\n\t\t\t\t\t\tdata.distance = f ? Math.sqrt( 1 / f ) : 0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildLight( data ) {\n\n\t\t\tvar light;\n\n\t\t\tswitch ( data.technique ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlight = new DirectionalLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlight = new PointLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlight = new SpotLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ambient':\n\t\t\t\t\tlight = new AmbientLight();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( data.parameters.color ) light.color.copy( data.parameters.color );\n\t\t\tif ( data.parameters.distance ) light.distance = data.parameters.distance;\n\n\t\t\treturn light;\n\n\t\t}\n\n\t\tfunction getLight( id ) {\n\n\t\t\tvar data = library.lights[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildLight );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find light with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// geometry\n\n\t\tfunction parseGeometry( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tsources: {},\n\t\t\t\tvertices: {},\n\t\t\t\tprimitives: []\n\t\t\t};\n\n\t\t\tvar mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];\n\n\t\t\t// the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep\n\t\t\tif ( mesh === undefined ) return;\n\n\t\t\tfor ( var i = 0; i < mesh.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = mesh.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id = child.getAttribute( 'id' );\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertices':\n\t\t\t\t\t\t// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];\n\t\t\t\t\t\tdata.vertices = parseGeometryVertices( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polygons':\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tdata.primitives.push( parseGeometryPrimitive( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSource( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tarray: [],\n\t\t\t\tstride: 3\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'float_array':\n\t\t\t\t\t\tdata.array = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Name_array':\n\t\t\t\t\t\tdata.array = parseStrings( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tvar accessor = getElementsByTagName( child, 'accessor' )[ 0 ];\n\n\t\t\t\t\t\tif ( accessor !== undefined ) {\n\n\t\t\t\t\t\t\tdata.stride = parseInt( accessor.getAttribute( 'stride' ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryVertices( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryPrimitive( xml ) {\n\n\t\t\tvar primitive = {\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tmaterial: xml.getAttribute( 'material' ),\n\t\t\t\tcount: parseInt( xml.getAttribute( 'count' ) ),\n\t\t\t\tinputs: {},\n\t\t\t\tstride: 0,\n\t\t\t\thasUV: false\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tvar set = parseInt( child.getAttribute( 'set' ) );\n\t\t\t\t\t\tvar inputname = ( set > 0 ? semantic + set : semantic );\n\t\t\t\t\t\tprimitive.inputs[ inputname ] = { id: id, offset: offset };\n\t\t\t\t\t\tprimitive.stride = Math.max( primitive.stride, offset + 1 );\n\t\t\t\t\t\tif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tprimitive.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'p':\n\t\t\t\t\t\tprimitive.p = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn primitive;\n\n\t\t}\n\n\t\tfunction groupPrimitives( primitives ) {\n\n\t\t\tvar build = {};\n\n\t\t\tfor ( var i = 0; i < primitives.length; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];\n\n\t\t\t\tbuild[ primitive.type ].push( primitive );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction checkUVCoordinates( primitives ) {\n\n\t\t\tvar count = 0;\n\n\t\t\tfor ( var i = 0, l = primitives.length; i < l; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( primitive.hasUV === true ) {\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count > 0 && count < primitives.length ) {\n\n\t\t\t\tprimitives.uvsNeedsFix = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildGeometry( data ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertices = data.vertices;\n\t\t\tvar primitives = data.primitives;\n\n\t\t\tif ( primitives.length === 0 ) return {};\n\n\t\t\t// our goal is to create one buffer geometry for a single type of primitives\n\t\t\t// first, we group all primitives by their type\n\n\t\t\tvar groupedPrimitives = groupPrimitives( primitives );\n\n\t\t\tfor ( var type in groupedPrimitives ) {\n\n\t\t\t\tvar primitiveType = groupedPrimitives[ type ];\n\n\t\t\t\t// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)\n\n\t\t\t\tcheckUVCoordinates( primitiveType );\n\n\t\t\t\t// third, create a buffer geometry for each type of primitives\n\n\t\t\t\tbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryType( primitives, sources, vertices ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar position = { array: [], stride: 0 };\n\t\t\tvar normal = { array: [], stride: 0 };\n\t\t\tvar uv = { array: [], stride: 0 };\n\t\t\tvar uv2 = { array: [], stride: 0 };\n\t\t\tvar color = { array: [], stride: 0 };\n\n\t\t\tvar skinIndex = { array: [], stride: 4 };\n\t\t\tvar skinWeight = { array: [], stride: 4 };\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar materialKeys = [];\n\n\t\t\tvar start = 0;\n\n\t\t\tfor ( var p = 0; p < primitives.length; p ++ ) {\n\n\t\t\t\tvar primitive = primitives[ p ];\n\t\t\t\tvar inputs = primitive.inputs;\n\n\t\t\t\t// groups\n\n\t\t\t\tvar count = 0;\n\n\t\t\t\tswitch ( primitive.type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tcount = primitive.count * 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tcount = primitive.count * 3;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polylist':\n\n\t\t\t\t\t\tfor ( var g = 0; g < primitive.count; g ++ ) {\n\n\t\t\t\t\t\t\tvar vc = primitive.vcount[ g ];\n\n\t\t\t\t\t\t\tswitch ( vc ) {\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcount += 3; // single triangle\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tcount += 6; // quad, subdivided into two triangles\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tcount += ( vc - 2 ) * 3; // polylist with more than four vertices\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addGroup( start, count, p );\n\t\t\t\tstart += count;\n\n\t\t\t\t// material\n\n\t\t\t\tif ( primitive.material ) {\n\n\t\t\t\t\tmaterialKeys.push( primitive.material );\n\n\t\t\t\t}\n\n\t\t\t\t// geometry data\n\n\t\t\t\tfor ( var name in inputs ) {\n\n\t\t\t\t\tvar input = inputs[ name ];\n\n\t\t\t\t\tswitch ( name )\t{\n\n\t\t\t\t\t\tcase 'VERTEX':\n\t\t\t\t\t\t\tfor ( var key in vertices ) {\n\n\t\t\t\t\t\t\t\tvar id = vertices[ key ];\n\n\t\t\t\t\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\t\t\t\t\tcase 'POSITION':\n\t\t\t\t\t\t\t\t\t\tvar prevLength = position.array.length;\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, position.array );\n\t\t\t\t\t\t\t\t\t\tposition.stride = sources[ id ].stride;\n\n\t\t\t\t\t\t\t\t\t\tif ( sources.skinWeights && sources.skinIndices ) {\n\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// see #3803\n\n\t\t\t\t\t\t\t\t\t\tif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar count = ( position.array.length - prevLength ) / position.stride;\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// fill missing uv coordinates\n\n\t\t\t\t\t\t\t\t\t\t\t\tuv.array.push( 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );\n\t\t\t\t\t\t\t\t\t\tnormal.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, color.array );\n\t\t\t\t\t\t\t\t\t\tcolor.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv2.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Semantic \"%s\" not handled in geometry build process.', key );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );\n\t\t\t\t\t\t\tnormal.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array );\n\t\t\t\t\t\t\tcolor.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );\n\t\t\t\t\t\t\tuv.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );\n\t\t\t\t\t\t\tuv2.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tif ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );\n\t\t\tif ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );\n\t\t\tif ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );\n\t\t\tif ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );\n\t\t\tif ( uv2.array.length > 0 ) geometry.setAttribute( 'uv2', new Float32BufferAttribute( uv2.array, uv2.stride ) );\n\n\t\t\tif ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );\n\t\t\tif ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );\n\n\t\t\tbuild.data = geometry;\n\t\t\tbuild.type = primitives[ 0 ].type;\n\t\t\tbuild.materialKeys = materialKeys;\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryData( primitive, source, offset, array ) {\n\n\t\t\tvar indices = primitive.p;\n\t\t\tvar stride = primitive.stride;\n\t\t\tvar vcount = primitive.vcount;\n\n\t\t\tfunction pushVector( i ) {\n\n\t\t\t\tvar index = indices[ i + offset ] * sourceStride;\n\t\t\t\tvar length = index + sourceStride;\n\n\t\t\t\tfor ( ; index < length; index ++ ) {\n\n\t\t\t\t\tarray.push( sourceArray[ index ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar sourceArray = source.array;\n\t\t\tvar sourceStride = source.stride;\n\n\t\t\tif ( primitive.vcount !== undefined ) {\n\n\t\t\t\tvar index = 0;\n\n\t\t\t\tfor ( var i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar count = vcount[ i ];\n\n\t\t\t\t\tif ( count === 4 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\t\t\t\t\t\tvar d = index + stride * 3;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( d );\n\t\t\t\t\t\tpushVector( b ); pushVector( c ); pushVector( d );\n\n\t\t\t\t\t} else if ( count === 3 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t} else if ( count > 4 ) {\n\n\t\t\t\t\t\tfor ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\t\tvar b = index + stride * k;\n\t\t\t\t\t\t\tvar c = index + stride * ( k + 1 );\n\n\t\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += stride * count;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += stride ) {\n\n\t\t\t\t\tpushVector( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getGeometry( id ) {\n\n\t\t\treturn getBuild( library.geometries[ id ], buildGeometry );\n\n\t\t}\n\n\t\t// kinematics\n\n\t\tfunction parseKinematicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tjoints: {},\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparseKinematicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildKinematicsModel( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsModel( id ) {\n\n\t\t\treturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );\n\n\t\t}\n\n\t\tfunction parseKinematicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'joint':\n\t\t\t\t\t\tdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseKinematicsJoint( xml ) {\n\n\t\t\tvar data;\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\tdata = parseKinematicsJointParameter( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsJointParameter( xml, data ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\taxis: new Vector3(),\n\t\t\t\tlimits: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 0\n\t\t\t\t},\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tstatic: false,\n\t\t\t\tzeroPosition: 0,\n\t\t\t\tmiddlePosition: 0\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.axis.fromArray( array );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'limits':\n\t\t\t\t\t\tvar max = child.getElementsByTagName( 'max' )[ 0 ];\n\t\t\t\t\t\tvar min = child.getElementsByTagName( 'min' )[ 0 ];\n\n\t\t\t\t\t\tdata.limits.max = parseFloat( max.textContent );\n\t\t\t\t\t\tdata.limits.min = parseFloat( min.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// if min is equal to or greater than max, consider the joint static\n\n\t\t\tif ( data.limits.min >= data.limits.max ) {\n\n\t\t\t\tdata.static = true;\n\n\t\t\t}\n\n\t\t\t// calculate middle position\n\n\t\t\tdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsLink( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tattachments: [],\n\t\t\t\ttransforms: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'attachment_full':\n\t\t\t\t\t\tdata.attachments.push( parseKinematicsAttachment( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsAttachment( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),\n\t\t\t\ttransforms: [],\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsTransform( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttype: xml.nodeName\n\t\t\t};\n\n\t\t\tvar array = parseFloats( xml.textContent );\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tdata.obj = new Matrix4();\n\t\t\t\t\tdata.obj.fromArray( array ).transpose();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tdata.angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// physics\n\n\t\tfunction parsePhysicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\trigidBodies: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'rigid_body':\n\t\t\t\t\t\tdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};\n\t\t\t\t\t\tparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parsePhysicsRigidBody( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparsePhysicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parsePhysicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'inertia':\n\t\t\t\t\t\tdata.inertia = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'mass':\n\t\t\t\t\t\tdata.mass = parseFloats( child.textContent )[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// scene\n\n\t\tfunction parseKinematicsScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tbindJointAxis: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_joint_axis':\n\t\t\t\t\t\tdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;\n\n\t\t}\n\n\t\tfunction parseKinematicsBindJointAxis( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttarget: xml.getAttribute( 'target' ).split( '/' ).pop()\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar param = child.getElementsByTagName( 'param' )[ 0 ];\n\t\t\t\t\t\tdata.axis = param.textContent;\n\t\t\t\t\t\tvar tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];\n\t\t\t\t\t\tdata.jointIndex = tmpJointIndex.substr( 0, tmpJointIndex.length - 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildKinematicsScene( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsScene( id ) {\n\n\t\t\treturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );\n\n\t\t}\n\n\t\tfunction setupKinematics() {\n\n\t\t\tvar kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];\n\t\t\tvar kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];\n\t\t\tvar visualSceneId = Object.keys( library.visualScenes )[ 0 ];\n\n\t\t\tif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;\n\n\t\t\tvar kinematicsModel = getKinematicsModel( kinematicsModelId );\n\t\t\tvar kinematicsScene = getKinematicsScene( kinematicsSceneId );\n\t\t\tvar visualScene = getVisualScene( visualSceneId );\n\n\t\t\tvar bindJointAxis = kinematicsScene.bindJointAxis;\n\t\t\tvar jointMap = {};\n\n\t\t\tfor ( var i = 0, l = bindJointAxis.length; i < l; i ++ ) {\n\n\t\t\t\tvar axis = bindJointAxis[ i ];\n\n\t\t\t\t// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'\n\n\t\t\t\tvar targetElement = collada.querySelector( '[sid=\"' + axis.target + '\"]' );\n\n\t\t\t\tif ( targetElement ) {\n\n\t\t\t\t\t// get the parent of the transform element\n\n\t\t\t\t\tvar parentVisualElement = targetElement.parentElement;\n\n\t\t\t\t\t// connect the joint of the kinematics model with the element in the visual scene\n\n\t\t\t\t\tconnect( axis.jointIndex, parentVisualElement );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction connect( jointIndex, visualElement ) {\n\n\t\t\t\tvar visualElementName = visualElement.getAttribute( 'name' );\n\t\t\t\tvar joint = kinematicsModel.joints[ jointIndex ];\n\n\t\t\t\tvisualScene.traverse( function ( object ) {\n\n\t\t\t\t\tif ( object.name === visualElementName ) {\n\n\t\t\t\t\t\tjointMap[ jointIndex ] = {\n\t\t\t\t\t\t\tobject: object,\n\t\t\t\t\t\t\ttransforms: buildTransformList( visualElement ),\n\t\t\t\t\t\t\tjoint: joint,\n\t\t\t\t\t\t\tposition: joint.zeroPosition\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar m0 = new Matrix4();\n\n\t\t\tkinematics = {\n\n\t\t\t\tjoints: kinematicsModel && kinematicsModel.joints,\n\n\t\t\t\tgetJointValue: function ( jointIndex ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\treturn jointData.position;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\\'t exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetJointValue: function ( jointIndex, value ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\tvar joint = jointData.joint;\n\n\t\t\t\t\t\tif ( value > joint.limits.max || value < joint.limits.min ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );\n\n\t\t\t\t\t\t} else if ( joint.static ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar object = jointData.object;\n\t\t\t\t\t\t\tvar axis = joint.axis;\n\t\t\t\t\t\t\tvar transforms = jointData.transforms;\n\n\t\t\t\t\t\t\tmatrix.identity();\n\n\t\t\t\t\t\t\t// each update, we have to apply all transforms in the correct order\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < transforms.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar transform = transforms[ i ];\n\n\t\t\t\t\t\t\t\t// if there is a connection of the transform node with a joint, apply the joint value\n\n\t\t\t\t\t\t\t\tif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {\n\n\t\t\t\t\t\t\t\t\tswitch ( joint.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tswitch ( transform.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.scale( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tobject.matrix.copy( matrix );\n\t\t\t\t\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t\t\t\tjointMap[ jointIndex ].position = value;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction buildTransformList( node ) {\n\n\t\t\tvar transforms = [];\n\n\t\t\tvar xml = collada.querySelector( '[id=\"' + node.id + '\"]' );\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar matrix = new Matrix4().fromArray( array ).transpose();\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: matrix\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector,\n\t\t\t\t\t\t\tangle: angle\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transforms;\n\n\t\t}\n\n\t\t// nodes\n\n\t\tfunction prepareNodes( xml ) {\n\n\t\t\tvar elements = xml.getElementsByTagName( 'node' );\n\n\t\t\t// ensure all node elements have id attributes\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tvar element = elements[ i ];\n\n\t\t\t\tif ( element.hasAttribute( 'id' ) === false ) {\n\n\t\t\t\t\telement.setAttribute( 'id', generateId() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar matrix = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\tfunction parseNode( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\ttype: xml.getAttribute( 'type' ),\n\t\t\t\tid: xml.getAttribute( 'id' ),\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tmatrix: new Matrix4(),\n\t\t\t\tnodes: [],\n\t\t\t\tinstanceCameras: [],\n\t\t\t\tinstanceControllers: [],\n\t\t\t\tinstanceLights: [],\n\t\t\t\tinstanceGeometries: [],\n\t\t\t\tinstanceNodes: [],\n\t\t\t\ttransforms: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'node':\n\t\t\t\t\t\tdata.nodes.push( child.getAttribute( 'id' ) );\n\t\t\t\t\t\tparseNode( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_camera':\n\t\t\t\t\t\tdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_controller':\n\t\t\t\t\t\tdata.instanceControllers.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_light':\n\t\t\t\t\t\tdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_geometry':\n\t\t\t\t\t\tdata.instanceGeometries.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_node':\n\t\t\t\t\t\tdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.fromArray( array ).transpose() );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvector.fromArray( array );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.scale( vector.fromArray( array ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasNode( data.id ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );\n\n\t\t\t} else {\n\n\t\t\t\tlibrary.nodes[ data.id ] = data;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseNodeInstance( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tid: parseId( xml.getAttribute( 'url' ) ),\n\t\t\t\tmaterials: {},\n\t\t\t\tskeletons: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_material':\n\t\t\t\t\t\tvar instances = child.getElementsByTagName( 'instance_material' );\n\n\t\t\t\t\t\tfor ( var j = 0; j < instances.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar instance = instances[ j ];\n\t\t\t\t\t\t\tvar symbol = instance.getAttribute( 'symbol' );\n\t\t\t\t\t\t\tvar target = instance.getAttribute( 'target' );\n\n\t\t\t\t\t\t\tdata.materials[ symbol ] = parseId( target );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skeleton':\n\t\t\t\t\t\tdata.skeletons.push( parseId( child.textContent ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildSkeleton( skeletons, joints ) {\n\n\t\t\tvar boneData = [];\n\t\t\tvar sortedBoneData = [];\n\n\t\t\tvar i, j, data;\n\n\t\t\t// a skeleton can have multiple root bones. collada expresses this\n\t\t\t// situtation with multiple \"skeleton\" tags per controller instance\n\n\t\t\tfor ( i = 0; i < skeletons.length; i ++ ) {\n\n\t\t\t\tvar skeleton = skeletons[ i ];\n\n\t\t\t\tvar root;\n\n\t\t\t\tif ( hasNode( skeleton ) ) {\n\n\t\t\t\t\troot = getNode( skeleton );\n\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t} else if ( hasVisualScene( skeleton ) ) {\n\n\t\t\t\t\t// handle case where the skeleton refers to the visual scene (#13335)\n\n\t\t\t\t\tvar visualScene = library.visualScenes[ skeleton ];\n\t\t\t\t\tvar children = visualScene.children;\n\n\t\t\t\t\tfor ( var j = 0; j < children.length; j ++ ) {\n\n\t\t\t\t\t\tvar child = children[ j ];\n\n\t\t\t\t\t\tif ( child.type === 'JOINT' ) {\n\n\t\t\t\t\t\t\tvar root = getNode( child.id );\n\t\t\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// sort bone data (the order is defined in the corresponding controller)\n\n\t\t\tfor ( i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < boneData.length; j ++ ) {\n\n\t\t\t\t\tdata = boneData[ j ];\n\n\t\t\t\t\tif ( data.bone.name === joints[ i ].name ) {\n\n\t\t\t\t\t\tsortedBoneData[ i ] = data;\n\t\t\t\t\t\tdata.processed = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add unprocessed bone data at the end of the list\n\n\t\t\tfor ( i = 0; i < boneData.length; i ++ ) {\n\n\t\t\t\tdata = boneData[ i ];\n\n\t\t\t\tif ( data.processed === false ) {\n\n\t\t\t\t\tsortedBoneData.push( data );\n\t\t\t\t\tdata.processed = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup arrays for skeleton creation\n\n\t\t\tvar bones = [];\n\t\t\tvar boneInverses = [];\n\n\t\t\tfor ( i = 0; i < sortedBoneData.length; i ++ ) {\n\n\t\t\t\tdata = sortedBoneData[ i ];\n\n\t\t\t\tbones.push( data.bone );\n\t\t\t\tboneInverses.push( data.boneInverse );\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t}\n\n\t\tfunction buildBoneHierarchy( root, joints, boneData ) {\n\n\t\t\t// setup bone data from visual scene\n\n\t\t\troot.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isBone === true ) {\n\n\t\t\t\t\tvar boneInverse;\n\n\t\t\t\t\t// retrieve the boneInverse from the controller data\n\n\t\t\t\t\tfor ( var i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\t\t\tvar joint = joints[ i ];\n\n\t\t\t\t\t\tif ( joint.name === object.name ) {\n\n\t\t\t\t\t\t\tboneInverse = joint.boneInverse;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( boneInverse === undefined ) {\n\n\t\t\t\t\t\t// Unfortunately, there can be joints in the visual scene that are not part of the\n\t\t\t\t\t\t// corresponding controller. In this case, we have to create a dummy boneInverse matrix\n\t\t\t\t\t\t// for the respective bone. This bone won't affect any vertices, because there are no skin indices\n\t\t\t\t\t\t// and weights defined for it. But we still have to add the bone to the sorted bone list in order to\n\t\t\t\t\t\t// ensure a correct animation of the model.\n\n\t\t\t\t\t\tboneInverse = new Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction buildNode( data ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tvar matrix = data.matrix;\n\t\t\tvar nodes = data.nodes;\n\t\t\tvar type = data.type;\n\t\t\tvar instanceCameras = data.instanceCameras;\n\t\t\tvar instanceControllers = data.instanceControllers;\n\t\t\tvar instanceLights = data.instanceLights;\n\t\t\tvar instanceGeometries = data.instanceGeometries;\n\t\t\tvar instanceNodes = data.instanceNodes;\n\n\t\t\t// nodes\n\n\t\t\tfor ( var i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( nodes[ i ] ) );\n\n\t\t\t}\n\n\t\t\t// instance cameras\n\n\t\t\tfor ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceCamera = getCamera( instanceCameras[ i ] );\n\n\t\t\t\tif ( instanceCamera !== null ) {\n\n\t\t\t\t\tobjects.push( instanceCamera.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance controllers\n\n\t\t\tfor ( var i = 0, l = instanceControllers.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceControllers[ i ];\n\t\t\t\tvar controller = getController( instance.id );\n\t\t\t\tvar geometries = getGeometry( controller.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tvar skeletons = instance.skeletons;\n\t\t\t\tvar joints = controller.skin.joints;\n\n\t\t\t\tvar skeleton = buildSkeleton( skeletons, joints );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = newObjects[ j ];\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.bind( skeleton, controller.skin.bindMatrix );\n\t\t\t\t\t\tobject.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance lights\n\n\t\t\tfor ( var i = 0, l = instanceLights.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceLight = getLight( instanceLights[ i ] );\n\n\t\t\t\tif ( instanceLight !== null ) {\n\n\t\t\t\t\tobjects.push( instanceLight.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance geometries\n\n\t\t\tfor ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceGeometries[ i ];\n\n\t\t\t\t// a single geometry instance in collada can lead to multiple object3Ds.\n\t\t\t\t// this is the case when primitives are combined like triangles and lines\n\n\t\t\t\tvar geometries = getGeometry( instance.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tobjects.push( newObjects[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance nodes\n\n\t\t\tfor ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( instanceNodes[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tvar object;\n\n\t\t\tif ( nodes.length === 0 && objects.length === 1 ) {\n\n\t\t\t\tobject = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tobject = ( type === 'JOINT' ) ? new Bone() : new Group();\n\n\t\t\t\tfor ( var i = 0; i < objects.length; i ++ ) {\n\n\t\t\t\t\tobject.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.name = ( type === 'JOINT' ) ? data.sid : data.name;\n\t\t\tobject.matrix.copy( matrix );\n\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tvar fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );\n\n\t\tfunction resolveMaterialBinding( keys, instanceMaterials ) {\n\n\t\t\tvar materials = [];\n\n\t\t\tfor ( var i = 0, l = keys.length; i < l; i ++ ) {\n\n\t\t\t\tvar id = instanceMaterials[ keys[ i ] ];\n\n\t\t\t\tif ( id === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );\n\t\t\t\t\tmaterials.push( fallbackMaterial );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials.push( getMaterial( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t}\n\n\t\tfunction buildObjects( geometries, instanceMaterials ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tfor ( var type in geometries ) {\n\n\t\t\t\tvar geometry = geometries[ type ];\n\n\t\t\t\tvar materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );\n\n\t\t\t\t// handle case if no materials are defined\n\n\t\t\t\tif ( materials.length === 0 ) {\n\n\t\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\t\tmaterials.push( new LineBasicMaterial() );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials.push( new MeshPhongMaterial() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// regard skinning\n\n\t\t\t\tvar skinning = ( geometry.data.attributes.skinIndex !== undefined );\n\n\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tmaterials[ i ].skinning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// choose between a single or multi materials (material array)\n\n\t\t\t\tvar material = ( materials.length === 1 ) ? materials[ 0 ] : materials;\n\n\t\t\t\t// now create a specific 3D object\n\n\t\t\t\tvar object;\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\t\tobject = new LineSegments( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tobject = new Line( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry.data, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry.data, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tobjects.push( object );\n\n\t\t\t}\n\n\t\t\treturn objects;\n\n\t\t}\n\n\t\tfunction hasNode( id ) {\n\n\t\t\treturn library.nodes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getNode( id ) {\n\n\t\t\treturn getBuild( library.nodes[ id ], buildNode );\n\n\t\t}\n\n\t\t// visual scenes\n\n\t\tfunction parseVisualScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tprepareNodes( xml );\n\n\t\t\tvar elements = getElementsByTagName( xml, 'node' );\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tdata.children.push( parseNode( elements[ i ] ) );\n\n\t\t\t}\n\n\t\t\tlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildVisualScene( data ) {\n\n\t\t\tvar group = new Group();\n\t\t\tgroup.name = data.name;\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar child = children[ i ];\n\n\t\t\t\tgroup.add( getNode( child.id ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction hasVisualScene( id ) {\n\n\t\t\treturn library.visualScenes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getVisualScene( id ) {\n\n\t\t\treturn getBuild( library.visualScenes[ id ], buildVisualScene );\n\n\t\t}\n\n\t\t// scenes\n\n\t\tfunction parseScene( xml ) {\n\n\t\t\tvar instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];\n\t\t\treturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );\n\n\t\t}\n\n\t\tfunction setupAnimations() {\n\n\t\t\tvar clips = library.clips;\n\n\t\t\tif ( isEmpty( clips ) === true ) {\n\n\t\t\t\tif ( isEmpty( library.animations ) === false ) {\n\n\t\t\t\t\t// if there are animations but no clips, we create a default clip for playback\n\n\t\t\t\t\tvar tracks = [];\n\n\t\t\t\t\tfor ( var id in library.animations ) {\n\n\t\t\t\t\t\tvar animationTracks = getAnimation( id );\n\n\t\t\t\t\t\tfor ( var i = 0, l = animationTracks.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\ttracks.push( animationTracks[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimations.push( new AnimationClip( 'default', - 1, tracks ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var id in clips ) {\n\n\t\t\t\t\tanimations.push( getAnimationClip( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// convert the parser error element into text with each child elements text\n\t\t// separated by new lines.\n\n\t\tfunction parserErrorToText( parserError ) {\n\n\t\t\tvar result = '';\n\t\t\tvar stack = [ parserError ];\n\n\t\t\twhile ( stack.length ) {\n\n\t\t\t\tvar node = stack.shift();\n\n\t\t\t\tif ( node.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t\t\tresult += node.textContent;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += '\\n';\n\t\t\t\t\tstack.push.apply( stack, node.childNodes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result.trim();\n\n\t\t}\n\n\t\tif ( text.length === 0 ) {\n\n\t\t\treturn { scene: new Scene() };\n\n\t\t}\n\n\t\tvar xml = new DOMParser().parseFromString( text, 'application/xml' );\n\n\t\tvar collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];\n\n\t\tvar parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];\n\t\tif ( parserError !== undefined ) {\n\n\t\t\t// Chrome will return parser error with a div in it\n\n\t\t\tvar errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];\n\t\t\tvar errorText;\n\n\t\t\tif ( errorElement ) {\n\n\t\t\t\terrorText = errorElement.textContent;\n\n\t\t\t} else {\n\n\t\t\t\terrorText = parserErrorToText( parserError );\n\n\t\t\t}\n\n\t\t\tconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\\n', errorText );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// metadata\n\n\t\tvar version = collada.getAttribute( 'version' );\n\t\tconsole.log( 'THREE.ColladaLoader: File version', version );\n\n\t\tvar asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );\n\t\tvar textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\tvar tgaLoader;\n\n\t\tif ( TGALoader ) {\n\n\t\t\ttgaLoader = new TGALoader( this.manager );\n\t\t\ttgaLoader.setPath( this.resourcePath || path );\n\n\t\t}\n\n\t\t//\n\n\t\tvar animations = [];\n\t\tvar kinematics = {};\n\t\tvar count = 0;\n\n\t\t//\n\n\t\tvar library = {\n\t\t\tanimations: {},\n\t\t\tclips: {},\n\t\t\tcontrollers: {},\n\t\t\timages: {},\n\t\t\teffects: {},\n\t\t\tmaterials: {},\n\t\t\tcameras: {},\n\t\t\tlights: {},\n\t\t\tgeometries: {},\n\t\t\tnodes: {},\n\t\t\tvisualScenes: {},\n\t\t\tkinematicsModels: {},\n\t\t\tphysicsModels: {},\n\t\t\tkinematicsScenes: {}\n\t\t};\n\n\t\tparseLibrary( collada, 'library_animations', 'animation', parseAnimation );\n\t\tparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );\n\t\tparseLibrary( collada, 'library_controllers', 'controller', parseController );\n\t\tparseLibrary( collada, 'library_images', 'image', parseImage );\n\t\tparseLibrary( collada, 'library_effects', 'effect', parseEffect );\n\t\tparseLibrary( collada, 'library_materials', 'material', parseMaterial );\n\t\tparseLibrary( collada, 'library_cameras', 'camera', parseCamera );\n\t\tparseLibrary( collada, 'library_lights', 'light', parseLight );\n\t\tparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );\n\t\tparseLibrary( collada, 'library_nodes', 'node', parseNode );\n\t\tparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );\n\t\tparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );\n\t\tparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );\n\t\tparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );\n\n\t\tbuildLibrary( library.animations, buildAnimation );\n\t\tbuildLibrary( library.clips, buildAnimationClip );\n\t\tbuildLibrary( library.controllers, buildController );\n\t\tbuildLibrary( library.images, buildImage );\n\t\tbuildLibrary( library.effects, buildEffect );\n\t\tbuildLibrary( library.materials, buildMaterial );\n\t\tbuildLibrary( library.cameras, buildCamera );\n\t\tbuildLibrary( library.lights, buildLight );\n\t\tbuildLibrary( library.geometries, buildGeometry );\n\t\tbuildLibrary( library.visualScenes, buildVisualScene );\n\n\t\tsetupAnimations();\n\t\tsetupKinematics();\n\n\t\tvar scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );\n\n\t\tif ( asset.upAxis === 'Z_UP' ) {\n\n\t\t\tscene.quaternion.setFromEuler( new Euler( - Math.PI / 2, 0, 0 ) );\n\n\t\t}\n\n\t\tscene.scale.multiplyScalar( asset.unit );\n\n\t\treturn {\n\t\t\tanimations: animations,\n\t\t\tkinematics: kinematics,\n\t\t\tlibrary: library,\n\t\t\tscene: scene\n\t\t};\n\n\t}\n\n} );\n\nexport { ColladaLoader };\n","import {\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tMaterial,\n\tMesh,\n\tMeshPhongMaterial,\n\tPoints,\n\tPointsMaterial,\n\tVector3\n} from \"../../../build/three.module.js\";\n\nvar OBJLoader = ( function () {\n\n\t// o object_name | g group_name\n\tvar object_pattern = /^[og]\\s*(.+)?/;\n\t// mtllib file_reference\n\tvar material_library_pattern = /^mtllib /;\n\t// usemtl material_name\n\tvar material_use_pattern = /^usemtl /;\n\t// usemap map_name\n\tvar map_use_pattern = /^usemap /;\n\n\tvar vA = new Vector3();\n\tvar vB = new Vector3();\n\tvar vC = new Vector3();\n\n\tvar ab = new Vector3();\n\tvar cb = new Vector3();\n\n\tfunction ParserState() {\n\n\t\tvar state = {\n\t\t\tobjects: [],\n\t\t\tobject: {},\n\n\t\t\tvertices: [],\n\t\t\tnormals: [],\n\t\t\tcolors: [],\n\t\t\tuvs: [],\n\n\t\t\tmaterials: {},\n\t\t\tmaterialLibraries: [],\n\n\t\t\tstartObject: function ( name, fromDeclaration ) {\n\n\t\t\t\t// If the current object (initial from reset) is not from a g/o declaration in the parsed\n\t\t\t\t// file. We need to use it for the first parsed g/o to keep things in sync.\n\t\t\t\tif ( this.object && this.object.fromDeclaration === false ) {\n\n\t\t\t\t\tthis.object.name = name;\n\t\t\t\t\tthis.object.fromDeclaration = ( fromDeclaration !== false );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tvar previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined );\n\n\t\t\t\tif ( this.object && typeof this.object._finalize === 'function' ) {\n\n\t\t\t\t\tthis.object._finalize( true );\n\n\t\t\t\t}\n\n\t\t\t\tthis.object = {\n\t\t\t\t\tname: name || '',\n\t\t\t\t\tfromDeclaration: ( fromDeclaration !== false ),\n\n\t\t\t\t\tgeometry: {\n\t\t\t\t\t\tvertices: [],\n\t\t\t\t\t\tnormals: [],\n\t\t\t\t\t\tcolors: [],\n\t\t\t\t\t\tuvs: [],\n\t\t\t\t\t\thasNormalIndices: false,\n\t\t\t\t\t\thasUVIndices: false\n\t\t\t\t\t},\n\t\t\t\t\tmaterials: [],\n\t\t\t\t\tsmooth: true,\n\n\t\t\t\t\tstartMaterial: function ( name, libraries ) {\n\n\t\t\t\t\t\tvar previous = this._finalize( false );\n\n\t\t\t\t\t\t// New usemtl declaration overwrites an inherited material, except if faces were declared\n\t\t\t\t\t\t// after the material, then it must be preserved for proper MultiMaterial continuation.\n\t\t\t\t\t\tif ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) {\n\n\t\t\t\t\t\t\tthis.materials.splice( previous.index, 1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar material = {\n\t\t\t\t\t\t\tindex: this.materials.length,\n\t\t\t\t\t\t\tname: name || '',\n\t\t\t\t\t\t\tmtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ),\n\t\t\t\t\t\t\tsmooth: ( previous !== undefined ? previous.smooth : this.smooth ),\n\t\t\t\t\t\t\tgroupStart: ( previous !== undefined ? previous.groupEnd : 0 ),\n\t\t\t\t\t\t\tgroupEnd: - 1,\n\t\t\t\t\t\t\tgroupCount: - 1,\n\t\t\t\t\t\t\tinherited: false,\n\n\t\t\t\t\t\t\tclone: function ( index ) {\n\n\t\t\t\t\t\t\t\tvar cloned = {\n\t\t\t\t\t\t\t\t\tindex: ( typeof index === 'number' ? index : this.index ),\n\t\t\t\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t\t\t\t\tmtllib: this.mtllib,\n\t\t\t\t\t\t\t\t\tsmooth: this.smooth,\n\t\t\t\t\t\t\t\t\tgroupStart: 0,\n\t\t\t\t\t\t\t\t\tgroupEnd: - 1,\n\t\t\t\t\t\t\t\t\tgroupCount: - 1,\n\t\t\t\t\t\t\t\t\tinherited: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tcloned.clone = this.clone.bind( cloned );\n\t\t\t\t\t\t\t\treturn cloned;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.materials.push( material );\n\n\t\t\t\t\t\treturn material;\n\n\t\t\t\t\t},\n\n\t\t\t\t\tcurrentMaterial: function () {\n\n\t\t\t\t\t\tif ( this.materials.length > 0 ) {\n\n\t\t\t\t\t\t\treturn this.materials[ this.materials.length - 1 ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn undefined;\n\n\t\t\t\t\t},\n\n\t\t\t\t\t_finalize: function ( end ) {\n\n\t\t\t\t\t\tvar lastMultiMaterial = this.currentMaterial();\n\t\t\t\t\t\tif ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) {\n\n\t\t\t\t\t\t\tlastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\n\t\t\t\t\t\t\tlastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\n\t\t\t\t\t\t\tlastMultiMaterial.inherited = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Ignore objects tail materials if no face declarations followed them before a new o/g started.\n\t\t\t\t\t\tif ( end && this.materials.length > 1 ) {\n\n\t\t\t\t\t\t\tfor ( var mi = this.materials.length - 1; mi >= 0; mi -- ) {\n\n\t\t\t\t\t\t\t\tif ( this.materials[ mi ].groupCount <= 0 ) {\n\n\t\t\t\t\t\t\t\t\tthis.materials.splice( mi, 1 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Guarantee at least one empty material, this makes the creation later more straight forward.\n\t\t\t\t\t\tif ( end && this.materials.length === 0 ) {\n\n\t\t\t\t\t\t\tthis.materials.push( {\n\t\t\t\t\t\t\t\tname: '',\n\t\t\t\t\t\t\t\tsmooth: this.smooth\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn lastMultiMaterial;\n\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Inherit previous objects material.\n\t\t\t\t// Spec tells us that a declared material must be set to all objects until a new material is declared.\n\t\t\t\t// If a usemtl declaration is encountered while this new object is being parsed, it will\n\t\t\t\t// overwrite the inherited material. Exception being that there was already face declarations\n\t\t\t\t// to the inherited material, then it will be preserved for proper MultiMaterial continuation.\n\n\t\t\t\tif ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) {\n\n\t\t\t\t\tvar declared = previousMaterial.clone( 0 );\n\t\t\t\t\tdeclared.inherited = true;\n\t\t\t\t\tthis.object.materials.push( declared );\n\n\t\t\t\t}\n\n\t\t\t\tthis.objects.push( this.object );\n\n\t\t\t},\n\n\t\t\tfinalize: function () {\n\n\t\t\t\tif ( this.object && typeof this.object._finalize === 'function' ) {\n\n\t\t\t\t\tthis.object._finalize( true );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tparseVertexIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 3 ) * 3;\n\n\t\t\t},\n\n\t\t\tparseNormalIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 3 ) * 3;\n\n\t\t\t},\n\n\t\t\tparseUVIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 2 ) * 2;\n\n\t\t\t},\n\n\t\t\taddVertex: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddVertexPoint: function ( a ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\n\t\t\t},\n\n\t\t\taddVertexLine: function ( a ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\n\t\t\t},\n\n\t\t\taddNormal: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.normals;\n\t\t\t\tvar dst = this.object.geometry.normals;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddFaceNormal: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.normals;\n\n\t\t\t\tvA.fromArray( src, a );\n\t\t\t\tvB.fromArray( src, b );\n\t\t\t\tvC.fromArray( src, c );\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tcb.normalize();\n\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\n\t\t\t},\n\n\t\t\taddColor: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.colors;\n\t\t\t\tvar dst = this.object.geometry.colors;\n\n\t\t\t\tif ( src[ a ] !== undefined ) dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tif ( src[ b ] !== undefined ) dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tif ( src[ c ] !== undefined ) dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddUV: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.uvs;\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ] );\n\n\t\t\t},\n\n\t\t\taddDefaultUV: function () {\n\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( 0, 0 );\n\t\t\t\tdst.push( 0, 0 );\n\t\t\t\tdst.push( 0, 0 );\n\n\t\t\t},\n\n\t\t\taddUVLine: function ( a ) {\n\n\t\t\t\tvar src = this.uvs;\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ] );\n\n\t\t\t},\n\n\t\t\taddFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) {\n\n\t\t\t\tvar vLen = this.vertices.length;\n\n\t\t\t\tvar ia = this.parseVertexIndex( a, vLen );\n\t\t\t\tvar ib = this.parseVertexIndex( b, vLen );\n\t\t\t\tvar ic = this.parseVertexIndex( c, vLen );\n\n\t\t\t\tthis.addVertex( ia, ib, ic );\n\t\t\t\tthis.addColor( ia, ib, ic );\n\n\t\t\t\t// normals\n\n\t\t\t\tif ( na !== undefined && na !== '' ) {\n\n\t\t\t\t\tvar nLen = this.normals.length;\n\n\t\t\t\t\tia = this.parseNormalIndex( na, nLen );\n\t\t\t\t\tib = this.parseNormalIndex( nb, nLen );\n\t\t\t\t\tic = this.parseNormalIndex( nc, nLen );\n\n\t\t\t\t\tthis.addNormal( ia, ib, ic );\n\n\t\t\t\t\tthis.object.geometry.hasNormalIndices = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.addFaceNormal( ia, ib, ic );\n\n\t\t\t\t}\n\n\t\t\t\t// uvs\n\n\t\t\t\tif ( ua !== undefined && ua !== '' ) {\n\n\t\t\t\t\tvar uvLen = this.uvs.length;\n\n\t\t\t\t\tia = this.parseUVIndex( ua, uvLen );\n\t\t\t\t\tib = this.parseUVIndex( ub, uvLen );\n\t\t\t\t\tic = this.parseUVIndex( uc, uvLen );\n\n\t\t\t\t\tthis.addUV( ia, ib, ic );\n\n\t\t\t\t\tthis.object.geometry.hasUVIndices = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// add placeholder values (for inconsistent face definitions)\n\n\t\t\t\t\tthis.addDefaultUV();\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\taddPointGeometry: function ( vertices ) {\n\n\t\t\t\tthis.object.geometry.type = 'Points';\n\n\t\t\t\tvar vLen = this.vertices.length;\n\n\t\t\t\tfor ( var vi = 0, l = vertices.length; vi < l; vi ++ ) {\n\n\t\t\t\t\tthis.addVertexPoint( this.parseVertexIndex( vertices[ vi ], vLen ) );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\taddLineGeometry: function ( vertices, uvs ) {\n\n\t\t\t\tthis.object.geometry.type = 'Line';\n\n\t\t\t\tvar vLen = this.vertices.length;\n\t\t\t\tvar uvLen = this.uvs.length;\n\n\t\t\t\tfor ( var vi = 0, l = vertices.length; vi < l; vi ++ ) {\n\n\t\t\t\t\tthis.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) {\n\n\t\t\t\t\tthis.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tstate.startObject( '', false );\n\n\t\treturn state;\n\n\t}\n\n\t//\n\n\tfunction OBJLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.materials = null;\n\n\t}\n\n\tOBJLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: OBJLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\tif ( onError ) {\n\n\t\t\t\t\t\tonError( e );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetMaterials: function ( materials ) {\n\n\t\t\tthis.materials = materials;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( text ) {\n\n\t\t\tvar state = new ParserState();\n\n\t\t\tif ( text.indexOf( '\\r\\n' ) !== - 1 ) {\n\n\t\t\t\t// This is faster than String.split with regex that splits on both\n\t\t\t\ttext = text.replace( /\\r\\n/g, '\\n' );\n\n\t\t\t}\n\n\t\t\tif ( text.indexOf( '\\\\\\n' ) !== - 1 ) {\n\n\t\t\t\t// join lines separated by a line continuation character (\\)\n\t\t\t\ttext = text.replace( /\\\\\\n/g, '' );\n\n\t\t\t}\n\n\t\t\tvar lines = text.split( '\\n' );\n\t\t\tvar line = '', lineFirstChar = '';\n\t\t\tvar lineLength = 0;\n\t\t\tvar result = [];\n\n\t\t\t// Faster to just trim left side of the line. Use if available.\n\t\t\tvar trimLeft = ( typeof ''.trimLeft === 'function' );\n\n\t\t\tfor ( var i = 0, l = lines.length; i < l; i ++ ) {\n\n\t\t\t\tline = lines[ i ];\n\n\t\t\t\tline = trimLeft ? line.trimLeft() : line.trim();\n\n\t\t\t\tlineLength = line.length;\n\n\t\t\t\tif ( lineLength === 0 ) continue;\n\n\t\t\t\tlineFirstChar = line.charAt( 0 );\n\n\t\t\t\t// @todo invoke passed in handler if any\n\t\t\t\tif ( lineFirstChar === '#' ) continue;\n\n\t\t\t\tif ( lineFirstChar === 'v' ) {\n\n\t\t\t\t\tvar data = line.split( /\\s+/ );\n\n\t\t\t\t\tswitch ( data[ 0 ] ) {\n\n\t\t\t\t\t\tcase 'v':\n\t\t\t\t\t\t\tstate.vertices.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 3 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( data.length >= 7 ) {\n\n\t\t\t\t\t\t\t\tstate.colors.push(\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 4 ] ),\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 5 ] ),\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 6 ] )\n\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// if no colors are defined, add placeholders so color and vertex indices match\n\n\t\t\t\t\t\t\t\tstate.colors.push( undefined, undefined, undefined );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vn':\n\t\t\t\t\t\t\tstate.normals.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 3 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vt':\n\t\t\t\t\t\t\tstate.uvs.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( lineFirstChar === 'f' ) {\n\n\t\t\t\t\tvar lineData = line.substr( 1 ).trim();\n\t\t\t\t\tvar vertexData = lineData.split( /\\s+/ );\n\t\t\t\t\tvar faceVertices = [];\n\n\t\t\t\t\t// Parse the face vertex data into an easy to work with format\n\n\t\t\t\t\tfor ( var j = 0, jl = vertexData.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar vertex = vertexData[ j ];\n\n\t\t\t\t\t\tif ( vertex.length > 0 ) {\n\n\t\t\t\t\t\t\tvar vertexParts = vertex.split( '/' );\n\t\t\t\t\t\t\tfaceVertices.push( vertexParts );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Draw an edge between the first vertex and all subsequent vertices to form an n-gon\n\n\t\t\t\t\tvar v1 = faceVertices[ 0 ];\n\n\t\t\t\t\tfor ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar v2 = faceVertices[ j ];\n\t\t\t\t\t\tvar v3 = faceVertices[ j + 1 ];\n\n\t\t\t\t\t\tstate.addFace(\n\t\t\t\t\t\t\tv1[ 0 ], v2[ 0 ], v3[ 0 ],\n\t\t\t\t\t\t\tv1[ 1 ], v2[ 1 ], v3[ 1 ],\n\t\t\t\t\t\t\tv1[ 2 ], v2[ 2 ], v3[ 2 ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( lineFirstChar === 'l' ) {\n\n\t\t\t\t\tvar lineParts = line.substring( 1 ).trim().split( \" \" );\n\t\t\t\t\tvar lineVertices = [], lineUVs = [];\n\n\t\t\t\t\tif ( line.indexOf( \"/\" ) === - 1 ) {\n\n\t\t\t\t\t\tlineVertices = lineParts;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tfor ( var li = 0, llen = lineParts.length; li < llen; li ++ ) {\n\n\t\t\t\t\t\t\tvar parts = lineParts[ li ].split( \"/\" );\n\n\t\t\t\t\t\t\tif ( parts[ 0 ] !== \"\" ) lineVertices.push( parts[ 0 ] );\n\t\t\t\t\t\t\tif ( parts[ 1 ] !== \"\" ) lineUVs.push( parts[ 1 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.addLineGeometry( lineVertices, lineUVs );\n\n\t\t\t\t} else if ( lineFirstChar === 'p' ) {\n\n\t\t\t\t\tvar lineData = line.substr( 1 ).trim();\n\t\t\t\t\tvar pointData = lineData.split( \" \" );\n\n\t\t\t\t\tstate.addPointGeometry( pointData );\n\n\t\t\t\t} else if ( ( result = object_pattern.exec( line ) ) !== null ) {\n\n\t\t\t\t\t// o object_name\n\t\t\t\t\t// or\n\t\t\t\t\t// g group_name\n\n\t\t\t\t\t// WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869\n\t\t\t\t\t// var name = result[ 0 ].substr( 1 ).trim();\n\t\t\t\t\tvar name = ( \" \" + result[ 0 ].substr( 1 ).trim() ).substr( 1 );\n\n\t\t\t\t\tstate.startObject( name );\n\n\t\t\t\t} else if ( material_use_pattern.test( line ) ) {\n\n\t\t\t\t\t// material\n\n\t\t\t\t\tstate.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries );\n\n\t\t\t\t} else if ( material_library_pattern.test( line ) ) {\n\n\t\t\t\t\t// mtl file\n\n\t\t\t\t\tstate.materialLibraries.push( line.substring( 7 ).trim() );\n\n\t\t\t\t} else if ( map_use_pattern.test( line ) ) {\n\n\t\t\t\t\t// the line is parsed but ignored since the loader assumes textures are defined MTL files\n\t\t\t\t\t// (according to https://www.okino.com/conv/imp_wave.htm, 'usemap' is the old-style Wavefront texture reference method)\n\n\t\t\t\t\tconsole.warn( 'THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.' );\n\n\t\t\t\t} else if ( lineFirstChar === 's' ) {\n\n\t\t\t\t\tresult = line.split( ' ' );\n\n\t\t\t\t\t// smooth shading\n\n\t\t\t\t\t// @todo Handle files that have varying smooth values for a set of faces inside one geometry,\n\t\t\t\t\t// but does not define a usemtl for each face set.\n\t\t\t\t\t// This should be detected and a dummy material created (later MultiMaterial and geometry groups).\n\t\t\t\t\t// This requires some care to not create extra material on each smooth value for \"normal\" obj files.\n\t\t\t\t\t// where explicit usemtl defines geometry groups.\n\t\t\t\t\t// Example asset: examples/models/obj/cerberus/Cerberus.obj\n\n\t\t\t\t\t/*\n\t\t\t\t\t * http://paulbourke.net/dataformats/obj/\n\t\t\t\t\t * or\n\t\t\t\t\t * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf\n\t\t\t\t\t *\n\t\t\t\t\t * From chapter \"Grouping\" Syntax explanation \"s group_number\":\n\t\t\t\t\t * \"group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off.\n\t\t\t\t\t * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form\n\t\t\t\t\t * surfaces, smoothing groups are either turned on or off; there is no difference between values greater\n\t\t\t\t\t * than 0.\"\n\t\t\t\t\t */\n\t\t\t\t\tif ( result.length > 1 ) {\n\n\t\t\t\t\t\tvar value = result[ 1 ].trim().toLowerCase();\n\t\t\t\t\t\tstate.object.smooth = ( value !== '0' && value !== 'off' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// ZBrush can produce \"s\" lines #11707\n\t\t\t\t\t\tstate.object.smooth = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar material = state.object.currentMaterial();\n\t\t\t\t\tif ( material ) material.smooth = state.object.smooth;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Handle null terminated files without exception\n\t\t\t\t\tif ( line === '\\0' ) continue;\n\n\t\t\t\t\tconsole.warn( 'THREE.OBJLoader: Unexpected line: \"' + line + '\"' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.finalize();\n\n\t\t\tvar container = new Group();\n\t\t\tcontainer.materialLibraries = [].concat( state.materialLibraries );\n\n\t\t\tfor ( var i = 0, l = state.objects.length; i < l; i ++ ) {\n\n\t\t\t\tvar object = state.objects[ i ];\n\t\t\t\tvar geometry = object.geometry;\n\t\t\t\tvar materials = object.materials;\n\t\t\t\tvar isLine = ( geometry.type === 'Line' );\n\t\t\t\tvar isPoints = ( geometry.type === 'Points' );\n\t\t\t\tvar hasVertexColors = false;\n\n\t\t\t\t// Skip o/g line declarations that did not follow with any faces\n\t\t\t\tif ( geometry.vertices.length === 0 ) continue;\n\n\t\t\t\tvar buffergeometry = new BufferGeometry();\n\n\t\t\t\tbuffergeometry.setAttribute( 'position', new Float32BufferAttribute( geometry.vertices, 3 ) );\n\n\t\t\t\tif ( geometry.hasNormalIndices === true ) {\n\n\t\t\t\t\tbuffergeometry.setAttribute( 'normal', new Float32BufferAttribute( geometry.normals, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\t\t\thasVertexColors = true;\n\t\t\t\t\tbuffergeometry.setAttribute( 'color', new Float32BufferAttribute( geometry.colors, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.hasUVIndices === true ) {\n\n\t\t\t\t\tbuffergeometry.setAttribute( 'uv', new Float32BufferAttribute( geometry.uvs, 2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Create materials\n\n\t\t\t\tvar createdMaterials = [];\n\n\t\t\t\tfor ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) {\n\n\t\t\t\t\tvar sourceMaterial = materials[ mi ];\n\t\t\t\t\tvar materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_' + hasVertexColors;\n\t\t\t\t\tvar material = state.materials[ materialHash ];\n\n\t\t\t\t\tif ( this.materials !== null ) {\n\n\t\t\t\t\t\tmaterial = this.materials.create( sourceMaterial.name );\n\n\t\t\t\t\t\t// mtl etc. loaders probably can't create line materials correctly, copy properties to a line material.\n\t\t\t\t\t\tif ( isLine && material && ! ( material instanceof LineBasicMaterial ) ) {\n\n\t\t\t\t\t\t\tvar materialLine = new LineBasicMaterial();\n\t\t\t\t\t\t\tMaterial.prototype.copy.call( materialLine, material );\n\t\t\t\t\t\t\tmaterialLine.color.copy( material.color );\n\t\t\t\t\t\t\tmaterial = materialLine;\n\n\t\t\t\t\t\t} else if ( isPoints && material && ! ( material instanceof PointsMaterial ) ) {\n\n\t\t\t\t\t\t\tvar materialPoints = new PointsMaterial( { size: 10, sizeAttenuation: false } );\n\t\t\t\t\t\t\tMaterial.prototype.copy.call( materialPoints, material );\n\t\t\t\t\t\t\tmaterialPoints.color.copy( material.color );\n\t\t\t\t\t\t\tmaterialPoints.map = material.map;\n\t\t\t\t\t\t\tmaterial = materialPoints;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material === undefined ) {\n\n\t\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\t\tmaterial = new LineBasicMaterial();\n\n\t\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\t\tmaterial = new PointsMaterial( { size: 1, sizeAttenuation: false } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterial.name = sourceMaterial.name;\n\t\t\t\t\t\tmaterial.flatShading = sourceMaterial.smooth ? false : true;\n\t\t\t\t\t\tmaterial.vertexColors = hasVertexColors;\n\n\t\t\t\t\t\tstate.materials[ materialHash ] = material;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcreatedMaterials.push( material );\n\n\t\t\t\t}\n\n\t\t\t\t// Create mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tif ( createdMaterials.length > 1 ) {\n\n\t\t\t\t\tfor ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) {\n\n\t\t\t\t\t\tvar sourceMaterial = materials[ mi ];\n\t\t\t\t\t\tbuffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\tmesh = new LineSegments( buffergeometry, createdMaterials );\n\n\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\tmesh = new Points( buffergeometry, createdMaterials );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmesh = new Mesh( buffergeometry, createdMaterials );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\tmesh = new LineSegments( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\tmesh = new Points( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmesh = new Mesh( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = object.name;\n\n\t\t\t\tcontainer.add( mesh );\n\n\t\t\t}\n\n\t\t\treturn container;\n\n\t\t}\n\n\t} );\n\n\treturn OBJLoader;\n\n} )();\n\nexport { OBJLoader };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min < max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.domElement.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\tscope.domElement.addEventListener( 'keydown', onKeyDown, false );\n\n\t// make sure element can receive keys.\n\n\tif ( scope.domElement.tabIndex === - 1 ) {\n\n\t\tscope.domElement.tabIndex = 0;\n\n\t}\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","import { Object3D, Quaternion } from 'three';\r\n\r\nclass URDFCollider extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFCollider = true;\r\n this.type = 'URDFCollider';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFVisual extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFVisual = true;\r\n this.type = 'URDFVisual';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFLink extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFLink = true;\r\n this.type = 'URDFLink';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFJoint extends Object3D {\r\n\r\n get jointType() {\r\n\r\n return this._jointType;\r\n\r\n }\r\n\r\n set jointType(v) {\r\n\r\n if (this.jointType === v) return;\r\n this._jointType = v;\r\n\r\n switch (v) {\r\n\r\n case 'fixed':\r\n case 'continuous':\r\n case 'revolute':\r\n case 'prismatic':\r\n this.jointValue = new Array(1).fill(0);\r\n break;\r\n\r\n case 'planar':\r\n this.jointValue = new Array(2).fill(0);\r\n break;\r\n\r\n case 'floating':\r\n this.jointValue = new Array(6).fill(0);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n get angle() {\r\n\r\n return this.jointValue[0];\r\n\r\n }\r\n\r\n constructor(...args) {\r\n super(...args);\r\n\r\n this.isURDFJoint = true;\r\n this.type = 'URDFJoint';\r\n\r\n this.urdfNode = null;\r\n this.jointValue = null;\r\n this.jointType = 'fixed';\r\n this.axis = null;\r\n this.limit = { lower: 0, upper: 0 };\r\n this.ignoreLimits = false;\r\n\r\n this.origPosition = null;\r\n this.origQuaternion = null;\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfNode = source.urdfNode;\r\n this.jointType = source.jointType;\r\n this.axis = source.axis ? source.axis.clone() : null;\r\n this.limit.lower = source.limit.lower;\r\n this.limit.upper = source.limit.upper;\r\n this.ignoreLimits = false;\r\n\r\n this.jointValue = [...source.jointValue];\r\n\r\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\r\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\r\n\r\n return this;\r\n }\r\n\r\n /* Public Functions */\r\n setJointValue(...values) {\r\n\r\n values = values.map(v => parseFloat(v));\r\n\r\n if (!this.origPosition || !this.origQuaternion) {\r\n\r\n this.origPosition = this.position.clone();\r\n this.origQuaternion = this.quaternion.clone();\r\n\r\n }\r\n\r\n switch (this.jointType) {\r\n\r\n case 'fixed': {\r\n\r\n return false;\r\n\r\n }\r\n case 'continuous':\r\n case 'revolute': {\r\n\r\n let angle = values[0];\r\n if (angle == null) return false;\r\n if (angle === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits && this.jointType === 'revolute') {\r\n\r\n angle = Math.min(this.limit.upper, angle);\r\n angle = Math.max(this.limit.lower, angle);\r\n\r\n }\r\n\r\n // FromAxisAngle seems to rotate the opposite of the\r\n // expected angle for URDF, so negate it here\r\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\r\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\r\n\r\n if (this.jointValue[0] !== angle) {\r\n\r\n this.jointValue[0] = angle;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'prismatic': {\r\n\r\n let pos = values[0];\r\n if (pos == null) return false;\r\n if (pos === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits) {\r\n\r\n pos = Math.min(this.limit.upper, pos);\r\n pos = Math.max(this.limit.lower, pos);\r\n\r\n }\r\n\r\n this.position.copy(this.origPosition);\r\n this.position.addScaledVector(this.axis, pos);\r\n\r\n if (this.jointValue[0] !== pos) {\r\n\r\n this.jointValue[0] = pos;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'floating':\r\n case 'planar':\r\n // TODO: Support these joint types\r\n console.warn(`'${ this.jointType }' joint not yet supported`);\r\n\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFRobot extends URDFLink {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFRobot = true;\r\n this.urdfNode = null;\r\n\r\n this.urdfRobotNode = null;\r\n this.robotName = null;\r\n\r\n this.links = null;\r\n this.joints = null;\r\n this.colliders = null;\r\n this.visual = null;\r\n this.frames = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfRobotNode = source.urdfRobotNode;\r\n this.robotName = source.robotName;\r\n\r\n this.links = {};\r\n this.joints = {};\r\n this.colliders = {};\r\n this.visual = {};\r\n\r\n this.traverse(c => {\r\n\r\n if (c.isURDFJoint && c.name in source.joints) {\r\n\r\n this.joints[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFLink && c.name in source.links) {\r\n\r\n this.links[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFCollider && c.name in source.colliders) {\r\n\r\n this.colliders[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFVisual && c.name in source.visual) {\r\n\r\n this.visual[c.name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n this.frames = {\r\n ...this.colliders,\r\n ...this.visual,\r\n ...this.links,\r\n ...this.joints,\r\n };\r\n\r\n return this;\r\n\r\n }\r\n\r\n getFrame(name) {\r\n\r\n return this.frames[name];\r\n\r\n }\r\n\r\n setJointValue(jointName, ...angle) {\r\n\r\n const joint = this.joints[jointName];\r\n if (joint) {\r\n\r\n return joint.setJointValue(...angle);\r\n\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n let didChange = false;\r\n for (const name in values) {\r\n\r\n const value = values[name];\r\n if (Array.isArray(value)) {\r\n\r\n didChange = didChange || this.setJointValue(name, ...value);\r\n\r\n } else {\r\n\r\n didChange = didChange || this.setJointValue(name, value);\r\n\r\n }\r\n\r\n }\r\n\r\n return didChange;\r\n\r\n }\r\n\r\n}\r\n\r\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\r\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = null;\r\n\r\n }\r\n\r\n /* Public API */\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n if (onProgress) {\r\n onProgress(null);\r\n }\r\n return res.text();\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n onError(e);\r\n } else {\r\n console.error('URDFLoader: Error loading file.', e);\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import * as THREE from 'three';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\r\nimport URDFLoader from './URDFLoader.js';\r\n\r\nconst tempVec2 = new THREE.Vector2();\r\n\r\n// urdf-viewer element\r\n// Loads and displays a 3D view of a URDF-formatted robot\r\n\r\n// Events\r\n// urdf-change: Fires when the URDF has finished loading and getting processed\r\n// urdf-processed: Fires when the URDF has finished loading and getting processed\r\n// geometry-loaded: Fires when all the geometry has been fully loaded\r\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\r\n// angle-change: Fires when an angle changes\r\nexport default\r\nclass URDFViewer extends HTMLElement {\r\n\r\n static get observedAttributes() {\r\n\r\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits'];\r\n\r\n }\r\n\r\n get package() { return this.getAttribute('package') || ''; }\r\n set package(val) { this.setAttribute('package', val); }\r\n\r\n get urdf() { return this.getAttribute('urdf') || ''; }\r\n set urdf(val) { this.setAttribute('urdf', val); }\r\n\r\n get ignoreLimits() { return this.hasAttribute('ignore-limits') || false; }\r\n set ignoreLimits(val) { val ? this.setAttribute('ignore-limits', val) : this.removeAttribute('ignore-limits'); }\r\n\r\n get up() { return this.getAttribute('up') || '+Z'; }\r\n set up(val) { this.setAttribute('up', val); }\r\n\r\n get displayShadow() { return this.hasAttribute('display-shadow') || false; }\r\n set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }\r\n\r\n get ambientColor() { return this.getAttribute('ambient-color') || '#455A64'; }\r\n set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }\r\n\r\n get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }\r\n set autoRedraw(val) { val ? this.setAttribute('auto-redraw', true) : this.removeAttribute('auto-redraw'); }\r\n\r\n get noAutoRecenter() { return this.hasAttribute('no-auto-recenter') || false; }\r\n set noAutoRecenter(val) { val ? this.setAttribute('no-auto-recenter', true) : this.removeAttribute('no-auto-recenter'); }\r\n\r\n get jointValues() {\r\n\r\n const values = {};\r\n if (this.robot) {\r\n\r\n for (const name in this.robot.joints) {\r\n\r\n const joint = this.robot.joints[name];\r\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue];\r\n\r\n }\r\n\r\n }\r\n\r\n return values;\r\n\r\n }\r\n set jointValues(val) { this.setJointValues(val); }\r\n\r\n get angles() {\r\n\r\n return this.jointValues;\r\n\r\n }\r\n set angles(v) {\r\n\r\n this.jointValues = v;\r\n\r\n }\r\n\r\n /* Lifecycle Functions */\r\n constructor() {\r\n\r\n super();\r\n\r\n this._requestId = 0;\r\n this._dirty = false;\r\n this._loadScheduled = false;\r\n this.robot = null;\r\n this.loadMeshFunc = null;\r\n this.urlModifierFunc = null;\r\n\r\n // Scene setup\r\n const scene = new THREE.Scene();\r\n\r\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000');\r\n ambientLight.groundColor.lerp(ambientLight.color, 0.5);\r\n ambientLight.intensity = 0.5;\r\n ambientLight.position.set(0, 1, 0);\r\n scene.add(ambientLight);\r\n\r\n // Light setup\r\n const dirLight = new THREE.DirectionalLight(0xffffff);\r\n dirLight.position.set(4, 10, 1);\r\n dirLight.shadow.mapSize.width = 2048;\r\n dirLight.shadow.mapSize.height = 2048;\r\n dirLight.castShadow = true;\r\n scene.add(dirLight);\r\n scene.add(dirLight.target);\r\n\r\n // Renderer setup\r\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n renderer.setClearColor(0xffffff);\r\n renderer.setClearAlpha(0);\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\r\n renderer.outputEncoding = THREE.sRGBEncoding;\r\n\r\n // Camera setup\r\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);\r\n camera.position.z = -10;\r\n\r\n // World setup\r\n const world = new THREE.Object3D();\r\n scene.add(world);\r\n\r\n const plane = new THREE.Mesh(\r\n new THREE.PlaneBufferGeometry(40, 40),\r\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 }),\r\n );\r\n plane.rotation.x = -Math.PI / 2;\r\n plane.position.y = -0.5;\r\n plane.receiveShadow = true;\r\n plane.scale.set(10, 10, 10);\r\n scene.add(plane);\r\n\r\n // Controls setup\r\n const controls = new OrbitControls(camera, renderer.domElement);\r\n controls.rotateSpeed = 2.0;\r\n controls.zoomSpeed = 5;\r\n controls.panSpeed = 2;\r\n controls.enableZoom = true;\r\n controls.enableDamping = false;\r\n controls.maxDistance = 50;\r\n controls.minDistance = 0.25;\r\n controls.addEventListener('change', () => this.recenter());\r\n\r\n this.scene = scene;\r\n this.world = world;\r\n this.renderer = renderer;\r\n this.camera = camera;\r\n this.controls = controls;\r\n this.plane = plane;\r\n this.directionalLight = dirLight;\r\n this.ambientLight = ambientLight;\r\n\r\n this._setUp(this.up);\r\n\r\n const _renderLoop = () => {\r\n\r\n if (this.parentNode) {\r\n\r\n this.updateSize();\r\n\r\n if (this._dirty || this.autoRedraw) {\r\n\r\n if (!this.noAutoRecenter) {\r\n\r\n this._updateEnvironment();\r\n }\r\n\r\n this.renderer.render(scene, camera);\r\n this._dirty = false;\r\n\r\n }\r\n\r\n // update controls after the environment in\r\n // case the controls are retargeted\r\n this.controls.update();\r\n\r\n }\r\n this._renderLoopId = requestAnimationFrame(_renderLoop);\r\n\r\n };\r\n _renderLoop();\r\n\r\n }\r\n\r\n connectedCallback() {\r\n\r\n // Add our initialize styles for the element if they haven't\r\n // been added yet\r\n if (!this.constructor._styletag) {\r\n\r\n const styletag = document.createElement('style');\r\n styletag.innerHTML =\r\n `\r\n ${ this.tagName } { display: block; }\r\n ${ this.tagName } canvas {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `;\r\n document.head.appendChild(styletag);\r\n this.constructor._styletag = styletag;\r\n\r\n }\r\n\r\n // add the renderer\r\n if (this.childElementCount === 0) {\r\n\r\n this.appendChild(this.renderer.domElement);\r\n\r\n }\r\n\r\n this.updateSize();\r\n requestAnimationFrame(() => this.updateSize());\r\n\r\n }\r\n\r\n disconnectedCallback() {\r\n\r\n cancelAnimationFrame(this._renderLoopId);\r\n\r\n }\r\n\r\n attributeChangedCallback(attr, oldval, newval) {\r\n\r\n this.recenter();\r\n\r\n switch (attr) {\r\n\r\n case 'package':\r\n case 'urdf': {\r\n\r\n this._scheduleLoad();\r\n break;\r\n\r\n }\r\n\r\n case 'up': {\r\n\r\n this._setUp(this.up);\r\n break;\r\n\r\n }\r\n\r\n case 'ambient-color': {\r\n\r\n this.ambientLight.color.set(this.ambientColor);\r\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5);\r\n break;\r\n\r\n }\r\n\r\n case 'ignore-limits': {\r\n\r\n this._setIgnoreLimits(this.ignoreLimits, true);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n /* Public API */\r\n updateSize() {\r\n\r\n const r = this.renderer;\r\n const w = this.clientWidth;\r\n const h = this.clientHeight;\r\n const currsize = r.getSize(tempVec2);\r\n\r\n if (currsize.width !== w || currsize.height !== h) {\r\n\r\n this.recenter();\r\n\r\n }\r\n\r\n r.setPixelRatio(window.devicePixelRatio);\r\n r.setSize(w, h, false);\r\n\r\n this.camera.aspect = w / h;\r\n this.camera.updateProjectionMatrix();\r\n\r\n }\r\n\r\n redraw() {\r\n\r\n this._dirty = true;\r\n }\r\n\r\n recenter() {\r\n\r\n this._updateEnvironment();\r\n this.redraw();\r\n\r\n }\r\n\r\n // Set the joint with jointName to\r\n // angle in degrees\r\n setJointValue(jointName, ...values) {\r\n\r\n if (!this.robot) return;\r\n if (!this.robot.joints[jointName]) return;\r\n\r\n if (this.robot.joints[jointName].setJointValue(...values)) {\r\n\r\n this.redraw();\r\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }));\r\n\r\n }\r\n\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n for (const name in values) this.setJointValue(name, values[name]);\r\n\r\n }\r\n\r\n /* Private Functions */\r\n // Updates the position of the plane to be at the\r\n // lowest point below the robot and focuses the\r\n // camera on the center of the scene\r\n _updateEnvironment() {\r\n\r\n if (!this.robot) return;\r\n\r\n this.world.updateMatrixWorld();\r\n\r\n const bbox = new THREE.Box3();\r\n bbox.setFromObject(this.robot);\r\n\r\n const center = bbox.getCenter(new THREE.Vector3());\r\n this.controls.target.y = center.y;\r\n this.plane.position.y = bbox.min.y - 1e-3;\r\n\r\n const dirLight = this.directionalLight;\r\n dirLight.castShadow = this.displayShadow;\r\n\r\n if (this.displayShadow) {\r\n\r\n // Update the shadow camera rendering bounds to encapsulate the\r\n // model. We use the bounding sphere of the bounding box for\r\n // simplicity -- this could be a tighter fit.\r\n const sphere = bbox.getBoundingSphere(new THREE.Sphere());\r\n const minmax = sphere.radius;\r\n const cam = dirLight.shadow.camera;\r\n cam.left = cam.bottom = -minmax;\r\n cam.right = cam.top = minmax;\r\n\r\n // Update the camera to focus on the center of the model so the\r\n // shadow can encapsulate it\r\n const offset = dirLight.position.clone().sub(dirLight.target.position);\r\n dirLight.target.position.copy(center);\r\n dirLight.position.copy(center).add(offset);\r\n\r\n cam.updateProjectionMatrix();\r\n\r\n }\r\n\r\n }\r\n\r\n _scheduleLoad() {\r\n\r\n // if our current model is already what's being requested\r\n // or has been loaded then early out\r\n if (this._prevload === `${ this.package }|${ this.urdf }`) return;\r\n this._prevload = `${ this.package }|${ this.urdf }`;\r\n\r\n // if we're already waiting on a load then early out\r\n if (this._loadScheduled) return;\r\n this._loadScheduled = true;\r\n\r\n if (this.robot) {\r\n\r\n this.robot.traverse(c => c.dispose && c.dispose());\r\n this.robot.parent.remove(this.robot);\r\n this.robot = null;\r\n\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n\r\n this._loadUrdf(this.package, this.urdf);\r\n this._loadScheduled = false;\r\n\r\n });\r\n\r\n }\r\n\r\n // Watch the package and urdf field and load the robot model.\r\n // This should _only_ be called from _scheduleLoad because that\r\n // ensures the that current robot has been removed\r\n _loadUrdf(pkg, urdf) {\r\n\r\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n if (urdf) {\r\n\r\n // Keep track of this request and make\r\n // sure it doesn't get overwritten by\r\n // a subsequent one\r\n this._requestId++;\r\n const requestId = this._requestId;\r\n\r\n const updateMaterials = mesh => {\r\n\r\n mesh.traverse(c => {\r\n\r\n if (c.isMesh) {\r\n\r\n c.castShadow = true;\r\n c.receiveShadow = true;\r\n\r\n if (c.material) {\r\n\r\n const mats =\r\n (Array.isArray(c.material) ? c.material : [c.material])\r\n .map(m => {\r\n\r\n if (m instanceof THREE.MeshBasicMaterial) {\r\n\r\n m = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n if (m.map) {\r\n\r\n m.map.encoding = THREE.GammaEncoding;\r\n\r\n }\r\n\r\n return m;\r\n\r\n });\r\n c.material = mats.length === 1 ? mats[0] : mats;\r\n\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n if (pkg.includes(':') && (pkg.split(':')[1].substring(0, 2)) !== '//') {\r\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\r\n\r\n // Convert pkg(s) into a map. E.g.\r\n // { \"pkg_name\": \"path/to/pkg_name\",\r\n // \"pk2\": \"path2/to/pk2\" }\r\n\r\n pkg = pkg.split(',').reduce((map, value) => {\r\n\r\n const split = value.split(/:/).filter(x => !!x);\r\n const pkgName = split.shift().trim();\r\n const pkgPath = split.join(':').trim();\r\n map[pkgName] = pkgPath;\r\n\r\n return map;\r\n\r\n }, {});\r\n }\r\n\r\n let robot = null;\r\n const manager = new THREE.LoadingManager();\r\n manager.onLoad = () => {\r\n\r\n // If another request has come in to load a new\r\n // robot, then ignore this one\r\n if (this._requestId !== requestId) {\r\n\r\n robot.traverse(c => c.dispose && c.dispose());\r\n return;\r\n\r\n }\r\n\r\n this.robot = robot;\r\n this.world.add(robot);\r\n updateMaterials(robot);\r\n\r\n this._setIgnoreLimits(this.ignoreLimits);\r\n\r\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }));\r\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n this.recenter();\r\n\r\n };\r\n\r\n if (this.urlModifierFunc) {\r\n\r\n manager.setURLModifier(this.urlModifierFunc);\r\n\r\n }\r\n\r\n const loader = new URDFLoader(manager);\r\n loader.packages = pkg;\r\n loader.loadMeshCb = this.loadMeshFunc;\r\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' };\r\n loader.load(urdf, model => robot = model);\r\n\r\n }\r\n\r\n }\r\n\r\n // Watch the coordinate frame and update the\r\n // rotation of the scene to match\r\n _setUp(up) {\r\n\r\n if (!up) up = '+Z';\r\n up = up.toUpperCase();\r\n const sign = up.replace(/[^-+]/g, '')[0] || '+';\r\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z';\r\n\r\n const PI = Math.PI;\r\n const HALFPI = PI / 2;\r\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI);\r\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0);\r\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0);\r\n\r\n }\r\n\r\n // Updates the current robot's angles to ignore\r\n // joint limits or not\r\n _setIgnoreLimits(ignore, dispatch = false) {\r\n\r\n if (this.robot) {\r\n\r\n Object\r\n .values(this.robot.joints)\r\n .forEach(joint => {\r\n\r\n joint.ignoreLimits = ignore;\r\n joint.setJointValue(...joint.jointValues);\r\n\r\n });\r\n\r\n }\r\n\r\n if (dispatch) {\r\n\r\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import * as THREE from 'three';\r\nimport URDFViewer from './urdf-viewer-element.js';\r\n\r\n// urdf-manipulator element\r\n// Displays a URDF model that can be manipulated with the mouse\r\n\r\n// Events\r\n// joint-mouseover: Fired when a joint is hovered over\r\n// joint-mouseout: Fired when a joint is no longer hovered over\r\n// manipulate-start: Fires when a joint is manipulated\r\n// manipulate-end: Fires when a joint is done being manipulated\r\nexport default\r\nclass URDFManipulator extends URDFViewer {\r\n\r\n static get observedAttributes() {\r\n\r\n return ['highlight-color', ...super.observedAttributes];\r\n\r\n }\r\n\r\n get disableDragging() { return this.hasAttribute('disable-dragging'); }\r\n set disableDragging(val) { val ? this.setAttribute('disable-dragging', !!val) : this.removeAttribute('disable-dragging'); }\r\n\r\n get highlightColor() { return this.getAttribute('highlight-color') || '#FFFFFF'; }\r\n set highlightColor(val) { val ? this.setAttribute('highlight-color', val) : this.removeAttribute('highlight-color'); }\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n\r\n // The highlight material\r\n this.highlightMaterial =\r\n new THREE.MeshPhongMaterial({\r\n shininess: 10,\r\n color: this.highlightColor,\r\n emissive: this.highlightColor,\r\n emissiveIntensity: 0.25,\r\n });\r\n\r\n const el = this.renderer.domElement;\r\n\r\n // Saved mouse data between frames and initial\r\n // click point in space\r\n const mouse = new THREE.Vector2();\r\n const lastMouse = new THREE.Vector2();\r\n const clickPoint = new THREE.Vector3();\r\n\r\n // Reuseable variables\r\n const raycaster = new THREE.Raycaster();\r\n const delta = new THREE.Vector2();\r\n const plane = new THREE.Plane();\r\n const line = new THREE.Line3();\r\n\r\n // The joint being manipulated\r\n let dragging = null;\r\n\r\n const toMouseCoord = (e, v) => {\r\n\r\n v.x = ((e.pageX - el.offsetLeft) / el.offsetWidth) * 2 - 1;\r\n v.y = -((e.pageY - el.offsetTop) / el.offsetHeight) * 2 + 1;\r\n\r\n };\r\n\r\n // Get which part of the robot is hit by the mouse click\r\n const getCollisions = m => {\r\n\r\n if (!this.robot) return [];\r\n\r\n raycaster.setFromCamera(m, this.camera);\r\n\r\n const meshes = [];\r\n this.robot.traverse(c => c.type === 'Mesh' && meshes.push(c));\r\n\r\n return raycaster.intersectObjects(meshes);\r\n\r\n };\r\n\r\n const isJoint = j => {\r\n\r\n return j.isURDFJoint && j.jointType !== 'fixed';\r\n\r\n };\r\n\r\n // Find the nearest parent that is a joint\r\n const findNearestJoint = m => {\r\n\r\n let curr = m;\r\n while (curr) {\r\n\r\n if (isJoint(curr)) {\r\n\r\n break;\r\n\r\n }\r\n\r\n curr = curr.parent;\r\n\r\n }\r\n\r\n return curr;\r\n\r\n };\r\n\r\n // Highlight the link geometry under a joint\r\n const highlightLinkGeometry = (m, revert) => {\r\n\r\n const traverse = c => {\r\n\r\n // Set or revert the highlight color\r\n if (c.type === 'Mesh') {\r\n\r\n if (revert) {\r\n\r\n c.material = c.__origMaterial;\r\n delete c.__origMaterial;\r\n\r\n } else {\r\n\r\n c.__origMaterial = c.material;\r\n c.material = this.highlightMaterial;\r\n\r\n }\r\n\r\n }\r\n\r\n // Look into the children and stop if the next child is\r\n // another joint\r\n if (c === m || !isJoint(c)) {\r\n\r\n for (let i = 0; i < c.children.length; i++) {\r\n\r\n traverse(c.children[i]);\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n traverse(m);\r\n\r\n };\r\n\r\n const temp = new THREE.Vector3();\r\n const intersect1 = new THREE.Vector3();\r\n const intersect2 = new THREE.Vector3();\r\n\r\n // Get the changed angle between mouse position 1 and 2\r\n // when manipulating target\r\n const getAngle = (tg, m1, m2) => {\r\n\r\n // TODO: Why is the constant negated?\r\n plane.normal.copy(tg.axis).transformDirection(tg.matrixWorld).normalize();\r\n plane.constant = -plane.normal.dot(clickPoint);\r\n\r\n // If the camera is looking at the rotation axis at a skewed angle\r\n temp.copy(this.camera.position).sub(clickPoint).normalize();\r\n if (Math.abs(temp.dot(plane.normal)) < 0.2) {\r\n\r\n // distance to the clicked point\r\n const dist = temp.copy(clickPoint).sub(this.camera.position).length() * 0.9;\r\n\r\n // Get the point closest to the original clicked point\r\n // and use that as center of the rotation axis\r\n temp.set(0, 0, 0).applyMatrix4(tg.matrixWorld);\r\n temp.addScaledVector(plane.normal, -plane.distanceToPoint(temp));\r\n\r\n // Project out from the camera\r\n raycaster.setFromCamera(m1, this.camera);\r\n intersect1.copy(raycaster.ray.origin).add(\r\n raycaster.ray.direction.normalize().multiplyScalar(dist),\r\n );\r\n intersect1.sub(temp);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n intersect2.copy(raycaster.ray.origin).add(\r\n raycaster.ray.direction.normalize().multiplyScalar(dist),\r\n );\r\n intersect2.sub(temp);\r\n\r\n temp.crossVectors(intersect2, intersect1).normalize();\r\n\r\n // Multiply by a magic number to make it feel good\r\n return temp.dot(plane.normal) * intersect2.angleTo(intersect1) * 2;\r\n\r\n } else {\r\n\r\n // Get the point closest to the original clicked point\r\n // and use that as center of the rotation axis\r\n temp.set(0, 0, 0).applyMatrix4(tg.matrixWorld);\r\n temp.addScaledVector(plane.normal, -plane.distanceToPoint(temp));\r\n\r\n // project onto the plane of rotation\r\n raycaster.setFromCamera(m1, this.camera);\r\n line.start.copy(raycaster.ray.origin);\r\n line.end.copy(raycaster.ray.origin).add(raycaster.ray.direction.normalize().multiplyScalar(1e5));\r\n plane.intersectLine(line, intersect1);\r\n intersect1.sub(temp);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n line.start.copy(raycaster.ray.origin);\r\n line.end.copy(raycaster.ray.origin).add(raycaster.ray.direction.normalize().multiplyScalar(1e5));\r\n plane.intersectLine(line, intersect2);\r\n intersect2.sub(temp);\r\n\r\n temp.crossVectors(intersect2, intersect1);\r\n\r\n return Math.sign(temp.dot(plane.normal)) * intersect2.angleTo(intersect1);\r\n\r\n }\r\n\r\n };\r\n\r\n // Get the amount to move the prismatic joint based on the mouse move\r\n const getMove = (tg, m1, m2) => {\r\n\r\n const dist = temp.copy(clickPoint).sub(this.camera.position).length();\r\n\r\n raycaster.setFromCamera(m1, this.camera);\r\n raycaster.ray.direction.normalize().multiplyScalar(dist);\r\n intersect1.copy(raycaster.ray.origin).add(raycaster.ray.direction);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n raycaster.ray.direction.normalize().multiplyScalar(dist);\r\n intersect2.copy(raycaster.ray.origin).add(raycaster.ray.direction);\r\n\r\n temp.copy(intersect2).sub(intersect1);\r\n\r\n plane.normal.copy(tg.axis).transformDirection(tg.parent.matrixWorld).normalize();\r\n\r\n return temp.length() * -Math.sign(temp.dot(plane.normal));\r\n\r\n };\r\n\r\n el.addEventListener('mousedown', e => {\r\n\r\n if (this.disableDragging) return;\r\n\r\n toMouseCoord(e, mouse);\r\n lastMouse.copy(mouse);\r\n\r\n // get the information on the clicked item\r\n // and set the dragged joint\r\n const target = getCollisions(mouse).shift();\r\n if (target) {\r\n\r\n dragging = findNearestJoint(target.object);\r\n\r\n if (dragging) {\r\n\r\n clickPoint.copy(target.point);\r\n this.dispatchEvent(new CustomEvent('manipulate-start', { bubbles: true, cancelable: true, detail: dragging.name }));\r\n this.controls.enabled = false;\r\n\r\n }\r\n\r\n }\r\n\r\n }, true);\r\n\r\n let hovered = null;\r\n this._mouseMoveFunc = e => {\r\n\r\n toMouseCoord(e, mouse);\r\n delta.copy(mouse).sub(lastMouse);\r\n\r\n // Keep track of the hovered item. If an item is being\r\n // dragged, then it is considered hovered\r\n const wasHovered = hovered;\r\n if (hovered) {\r\n\r\n hovered = null;\r\n }\r\n\r\n if (dragging == null && this.disableDragging === false) {\r\n\r\n const collision = getCollisions(mouse).shift() || null;\r\n const joint = collision && findNearestJoint(collision.object);\r\n if (joint) {\r\n\r\n hovered = joint;\r\n\r\n }\r\n\r\n } else if (dragging) {\r\n\r\n hovered = dragging;\r\n\r\n }\r\n\r\n // Highlight the meshes and broadcast events if the hovered item changed\r\n if (hovered !== wasHovered) {\r\n\r\n if (wasHovered) {\r\n\r\n highlightLinkGeometry(wasHovered, true);\r\n this.dispatchEvent(new CustomEvent('joint-mouseout', { bubbles: true, cancelable: true, detail: wasHovered.name }));\r\n\r\n }\r\n\r\n if (hovered) {\r\n\r\n highlightLinkGeometry(hovered, false);\r\n this.dispatchEvent(new CustomEvent('joint-mouseover', { bubbles: true, cancelable: true, detail: hovered.name }));\r\n\r\n }\r\n\r\n this.redraw();\r\n\r\n }\r\n\r\n // Apply the manipulation\r\n if (dragging !== null) {\r\n\r\n let delta = null;\r\n if (dragging.jointType === 'revolute' || dragging.jointType === 'continuous') {\r\n\r\n delta = getAngle(dragging, mouse, lastMouse);\r\n\r\n } else if (dragging.jointType === 'prismatic') {\r\n\r\n delta = getMove(dragging, mouse, lastMouse);\r\n\r\n } else {\r\n\r\n // Not supported\r\n\r\n }\r\n\r\n if (delta) {\r\n\r\n this.setJointValue(dragging.name, dragging.angle + delta);\r\n\r\n }\r\n\r\n }\r\n\r\n lastMouse.copy(mouse);\r\n\r\n };\r\n\r\n // Clean up\r\n this._mouseUpFunc = e => {\r\n\r\n if (dragging) {\r\n\r\n this.dispatchEvent(new CustomEvent('manipulate-end', { bubbles: true, cancelable: true, detail: dragging.name }));\r\n dragging = null;\r\n this.controls.enabled = true;\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n connectedCallback() {\r\n\r\n super.connectedCallback();\r\n window.addEventListener('mousemove', this._mouseMoveFunc, true);\r\n window.addEventListener('mouseup', this._mouseUpFunc, true);\r\n\r\n }\r\n\r\n disconnectedCallback() {\r\n\r\n super.disconnectedCallback();\r\n window.removeEventListener('mousemove', this._mouseMoveFunc, true);\r\n window.removeEventListener('mouseup', this._mouseUpFunc, true);\r\n\r\n }\r\n\r\n attributeChangedCallback(attr, oldval, newval) {\r\n\r\n super.attributeChangedCallback(attr, oldval, newval);\r\n\r\n switch (attr) {\r\n\r\n case 'highlight-color':\r\n this.highlightMaterial.color.set(this.highlightColor);\r\n this.highlightMaterial.emissive.set(this.highlightColor);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","/* globals */\r\nimport * as THREE from 'three';\r\nimport { registerDragEvents } from './dragAndDrop.js';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';\r\nimport URDFManipulator from '../../src/urdf-manipulator-element.js';\r\n\r\ncustomElements.define('urdf-viewer', URDFManipulator);\r\n\r\n// declare these globally for the sake of the example.\r\n// Hack to make the build work with webpack for now.\r\n// TODO: Remove this once modules or parcel is being used\r\nconst viewer = document.querySelector('urdf-viewer');\r\n\r\nconst limitsToggle = document.getElementById('ignore-joint-limits');\r\nconst upSelect = document.getElementById('up-select');\r\nconst sliderList = document.querySelector('#controls ul');\r\nconst controlsel = document.getElementById('controls');\r\nconst controlsToggle = document.getElementById('toggle-controls');\r\nconst animToggle = document.getElementById('do-animate');\r\nconst DEG2RAD = Math.PI / 180;\r\nconst RAD2DEG = 1 / DEG2RAD;\r\nlet sliders = {};\r\n\r\n// Global Functions\r\nconst setColor = color => {\r\n\r\n document.body.style.backgroundColor = color;\r\n viewer.highlightColor = '#' + (new THREE.Color(0xffffff)).lerp(new THREE.Color(color), 0.35).getHexString();\r\n\r\n};\r\n\r\n// Events\r\n// toggle checkbox\r\nlimitsToggle.addEventListener('click', () => {\r\n limitsToggle.classList.toggle('checked');\r\n viewer.ignoreLimits = limitsToggle.classList.contains('checked');\r\n});\r\n\r\nupSelect.addEventListener('change', () => viewer.up = upSelect.value);\r\n\r\ncontrolsToggle.addEventListener('click', () => controlsel.classList.toggle('hidden'));\r\n\r\n// watch for urdf changes\r\nviewer.addEventListener('urdf-change', () => {\r\n\r\n Object\r\n .values(sliders)\r\n .forEach(sl => sl.remove());\r\n sliders = {};\r\n\r\n});\r\n\r\nviewer.addEventListener('ignore-limits-change', () => {\r\n\r\n Object\r\n .values(sliders)\r\n .forEach(sl => sl.update());\r\n\r\n});\r\n\r\nviewer.addEventListener('angle-change', e => {\r\n\r\n if (sliders[e.detail]) sliders[e.detail].update();\r\n\r\n});\r\n\r\nviewer.addEventListener('joint-mouseover', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) j.setAttribute('robot-hovered', true);\r\n\r\n});\r\n\r\nviewer.addEventListener('joint-mouseout', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) j.removeAttribute('robot-hovered');\r\n\r\n});\r\n\r\nlet originalNoAutoRecenter;\r\nviewer.addEventListener('manipulate-start', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) {\r\n j.scrollIntoView({ block: 'nearest' });\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n originalNoAutoRecenter = viewer.noAutoRecenter;\r\n viewer.noAutoRecenter = true;\r\n\r\n});\r\n\r\nviewer.addEventListener('manipulate-end', e => {\r\n\r\n viewer.noAutoRecenter = originalNoAutoRecenter;\r\n\r\n});\r\n\r\n// create the sliders\r\nviewer.addEventListener('urdf-processed', () => {\r\n\r\n const r = viewer.robot;\r\n Object\r\n .keys(r.joints)\r\n .sort((a, b) => {\r\n\r\n const da = a.split(/[^\\d]+/g).filter(v => !!v).pop();\r\n const db = b.split(/[^\\d]+/g).filter(v => !!v).pop();\r\n\r\n if (da !== undefined && db !== undefined) {\r\n const delta = parseFloat(da) - parseFloat(db);\r\n if (delta !== 0) return delta;\r\n }\r\n\r\n if (a > b) return 1;\r\n if (b > a) return -1;\r\n return 0;\r\n\r\n })\r\n .map(key => r.joints[key])\r\n .forEach(joint => {\r\n\r\n const li = document.createElement('li');\r\n li.innerHTML =\r\n `\r\n ${ joint.name }\r\n \r\n \r\n `;\r\n li.setAttribute('joint-type', joint.jointType);\r\n li.setAttribute('joint-name', joint.name);\r\n\r\n sliderList.appendChild(li);\r\n\r\n // update the joint display\r\n const slider = li.querySelector('input[type=\"range\"]');\r\n const input = li.querySelector('input[type=\"number\"]');\r\n li.update = () => {\r\n let degVal = joint.angle;\r\n\r\n if (joint.jointType === 'revolute' || joint.jointType === 'continuous') {\r\n degVal *= RAD2DEG;\r\n }\r\n\r\n if (Math.abs(degVal) > 1) {\r\n degVal = degVal.toFixed(1);\r\n } else {\r\n degVal = degVal.toPrecision(2);\r\n }\r\n\r\n input.value = parseFloat(degVal);\r\n\r\n // directly input the value\r\n slider.value = joint.angle;\r\n\r\n if (viewer.ignoreLimits || joint.jointType === 'continuous') {\r\n slider.min = -6.28;\r\n slider.max = 6.28;\r\n\r\n input.min = -6.28 * RAD2DEG;\r\n input.max = 6.28 * RAD2DEG;\r\n } else {\r\n slider.min = joint.limit.lower;\r\n slider.max = joint.limit.upper;\r\n\r\n input.min = joint.limit.lower * RAD2DEG;\r\n input.max = joint.limit.upper * RAD2DEG;\r\n }\r\n };\r\n\r\n switch (joint.jointType) {\r\n\r\n case 'continuous':\r\n case 'prismatic':\r\n case 'revolute':\r\n break;\r\n default:\r\n li.update = () => {};\r\n input.remove();\r\n slider.remove();\r\n\r\n }\r\n\r\n slider.addEventListener('input', () => {\r\n viewer.setJointValue(joint.name, slider.value);\r\n li.update();\r\n });\r\n\r\n input.addEventListener('change', () => {\r\n viewer.setJointValue(joint.name, input.value * DEG2RAD);\r\n li.update();\r\n });\r\n\r\n li.update();\r\n\r\n sliders[joint.name] = li;\r\n\r\n });\r\n\r\n});\r\n\r\ndocument.addEventListener('WebComponentsReady', () => {\r\n\r\n viewer.loadMeshFunc = (path, manager, done) => {\r\n\r\n const ext = path.split(/\\./g).pop().toLowerCase();\r\n switch (ext) {\r\n\r\n case 'gltf':\r\n case 'glb':\r\n new GLTFLoader(manager).load(\r\n path,\r\n result => done(result.scene),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'obj':\r\n new OBJLoader(manager).load(\r\n path,\r\n result => done(result),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'dae':\r\n new ColladaLoader(manager).load(\r\n path,\r\n result => done(result.scene),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'stl':\r\n new STLLoader(manager).load(\r\n path,\r\n result => {\r\n const material = new THREE.MeshPhongMaterial();\r\n const mesh = new THREE.Mesh(result, material);\r\n done(mesh);\r\n },\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n\r\n }\r\n\r\n };\r\n\r\n document.querySelector('li[urdf]').dispatchEvent(new Event('click'));\r\n\r\n if (/javascript\\/example\\/build/i.test(window.location)) {\r\n viewer.package = '../../../urdf';\r\n }\r\n\r\n registerDragEvents(viewer, () => {\r\n setColor('#263238');\r\n animToggle.classList.remove('checked');\r\n });\r\n\r\n});\r\n\r\n// init 2D UI and animation\r\nconst updateAngles = () => {\r\n\r\n if (!viewer.setJointValue) return;\r\n\r\n // reset everything to 0 first\r\n const resetJointValues = viewer.angles;\r\n for (const name in resetJointValues) resetJointValues[name] = 0;\r\n viewer.setJointValues(resetJointValues);\r\n\r\n // animate the legs\r\n const time = Date.now() / 3e2;\r\n for (let i = 1; i <= 6; i++) {\r\n\r\n const offset = i * Math.PI / 3;\r\n const ratio = Math.max(0, Math.sin(time + offset));\r\n\r\n viewer.setJointValue(`HP${ i }`, THREE.MathUtils.lerp(30, 0, ratio) * DEG2RAD);\r\n viewer.setJointValue(`KP${ i }`, THREE.MathUtils.lerp(90, 150, ratio) * DEG2RAD);\r\n viewer.setJointValue(`AP${ i }`, THREE.MathUtils.lerp(-30, -60, ratio) * DEG2RAD);\r\n\r\n viewer.setJointValue(`TC${ i }A`, THREE.MathUtils.lerp(0, 0.065, ratio));\r\n viewer.setJointValue(`TC${ i }B`, THREE.MathUtils.lerp(0, 0.065, ratio));\r\n\r\n viewer.setJointValue(`W${ i }`, window.performance.now() * 0.001);\r\n\r\n }\r\n\r\n};\r\n\r\nconst updateLoop = () => {\r\n\r\n if (animToggle.classList.contains('checked')) {\r\n updateAngles();\r\n }\r\n\r\n requestAnimationFrame(updateLoop);\r\n\r\n};\r\n\r\ndocument.querySelectorAll('#urdf-options li[urdf]').forEach(el => {\r\n\r\n el.addEventListener('click', e => {\r\n\r\n const urdf = e.target.getAttribute('urdf');\r\n const color = e.target.getAttribute('color');\r\n\r\n viewer.up = '-Z';\r\n document.getElementById('up-select').value = viewer.up;\r\n viewer.urdf = urdf;\r\n animToggle.classList.add('checked');\r\n setColor(color);\r\n\r\n });\r\n\r\n});\r\n\r\ndocument.addEventListener('WebComponentsReady', () => {\r\n\r\n animToggle.addEventListener('click', () => animToggle.classList.toggle('checked'));\r\n\r\n // stop the animation if user tried to manipulate the model\r\n viewer.addEventListener('manipulate-start', e => animToggle.classList.remove('checked'));\r\n viewer.addEventListener('urdf-processed', e => updateAngles());\r\n updateLoop();\r\n viewer.camera.position.set(-5.5, 3.5, 5.5);\r\n\r\n});\r\n"],"names":["Node","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry","THREE.Vector2","THREE.Scene","THREE.HemisphereLight","THREE.DirectionalLight","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","THREE.sRGBEncoding","THREE.PerspectiveCamera","THREE.Object3D","THREE.PlaneBufferGeometry","THREE.ShadowMaterial","THREE.DoubleSide","THREE.Box3","THREE.Sphere","THREE.MeshBasicMaterial","THREE.GammaEncoding","THREE.LoadingManager","THREE.Raycaster","THREE.Plane","THREE.Line3","THREE.Color","THREE.MathUtils"],"mappings":"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AAC,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,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,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;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,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;CAC3D,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;CAC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EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,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;CAC/D,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;AACjE;CACA,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG,CAAC;AACnH;CACA,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D;CACA,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF;CACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACzB;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,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,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,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG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A,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,E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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../node_modules/three/build/three.module.js","../src/dragAndDrop.js","../../node_modules/three/examples/jsm/loaders/STLLoader.js","../../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../node_modules/three/examples/jsm/loaders/TGALoader.js","../../node_modules/three/examples/jsm/loaders/ColladaLoader.js","../../node_modules/three/examples/jsm/loaders/OBJLoader.js","../../node_modules/three/examples/jsm/controls/OrbitControls.js","../../src/URDFClasses.js","../../src/URDFLoader.js","../../src/urdf-viewer-element.js","../../src/urdf-manipulator-element.js","../src/index.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '119';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\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 );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\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\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\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)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\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.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = RGBAFormat; // see #18859\n\tthis.texture.encoding = texture.encoding;\n\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\tthis.texture.minFilter = texture.minFilter;\n\tthis.texture.magFilter = texture.magFilter;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: /* glsl */`\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t}\n\t\t`,\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t`\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\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\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\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\";\n\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\";\n\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\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\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}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\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\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\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\";\n\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\";\n\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 vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\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)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\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)\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\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\";\n\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\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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;\";\n\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\";\n\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\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\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;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\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; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\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\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\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\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\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\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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 *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn !! extension;\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( ! this.has( name ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\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\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\t'out highp vec4 pc_fragColor;',\n\t\t\t'#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\", \"transmissionMap\"\n\t];\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\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,\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,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\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.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\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.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = [];\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t\tif ( window.XRHand ) {\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tlet joint = new Group();\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\tthis._hand.joints.push( joint );\n\t\t\t\t\t// ??\n\t\t\t\t\tthis._hand.add( joint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\n\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tlet jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\n\n\t\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t\t\t// Custom events\n\n\t\t\t\t\t\t// Check pinch\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchend\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchstart\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tvar maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material, parameters );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\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\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\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 );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\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 );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\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\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\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\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = ( tension !== undefined ) ? tension : 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\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 );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\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\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\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.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\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.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\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, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, 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, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, 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, LightShadow, 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, SpotLightShadow, 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 };\n","// Converts a datatransfer structer into an object with all paths and files\n// listed out. Returns a promise that resolves with the file structure.\nfunction dataTransferToFiles(dataTransfer) {\n\n if (!(dataTransfer instanceof DataTransfer)) {\n\n throw new Error('Data must be of type \"DataTransfer\"', dataTransfer);\n\n }\n\n const files = {};\n\n // recurse down the webkit file structure resolving\n // the paths to files names to store in the `files`\n // object\n function recurseDirectory(item) {\n\n if (item.isFile) {\n\n return new Promise(resolve => {\n item.file(file => {\n files[item.fullPath] = file;\n resolve();\n });\n });\n\n } else {\n\n const reader = item.createReader();\n\n return new Promise(resolve => {\n\n const promises = [];\n\n // exhaustively read all the directory entries\n function readNextEntries() {\n\n reader.readEntries(et => {\n\n if (et.length === 0) {\n\n Promise.all(promises).then(() => resolve());\n\n } else {\n\n et.forEach(e => {\n\n promises.push(recurseDirectory(e));\n\n });\n readNextEntries();\n\n }\n\n });\n\n }\n\n readNextEntries();\n\n });\n }\n }\n\n return new Promise(resolve => {\n\n // Traverse down the tree and add the files into the zip\n const dtitems = dataTransfer.items && [...dataTransfer.items];\n const dtfiles = [...dataTransfer.files];\n\n if (dtitems && dtitems.length && dtitems[0].webkitGetAsEntry) {\n\n const promises = [];\n for (let i = 0; i < dtitems.length; i++) {\n const item = dtitems[i];\n const entry = item.webkitGetAsEntry();\n\n promises.push(recurseDirectory(entry));\n\n }\n Promise.all(promises).then(() => resolve(files));\n\n } else {\n\n // add a '/' prefix to math the file directory entry\n // on webkit browsers\n dtfiles\n .filter(f => f.size !== 0)\n .forEach(f => files['/' + f.name] = f);\n\n resolve(files);\n\n }\n });\n}\nexport function registerDragEvents(viewer, callback) {\n\n document.addEventListener('dragover', e => e.preventDefault());\n document.addEventListener('dragenter', e => e.preventDefault());\n document.addEventListener('drop', e => {\n\n e.preventDefault();\n\n // convert the files\n dataTransferToFiles(e.dataTransfer)\n .then(files => {\n\n // removes '..' and '.' tokens and normalizes slashes\n const cleanFilePath = path => {\n\n return path\n .replace(/\\\\/g, '/')\n .split(/\\//g)\n .reduce((acc, el) => {\n\n if (el === '..') acc.pop();\n else if (el !== '.') acc.push(el);\n return acc;\n\n }, [])\n .join('/');\n\n };\n\n // set the loader url modifier to check the list\n // of files\n const fileNames = Object.keys(files).map(n => cleanFilePath(n));\n viewer.urlModifierFunc = url => {\n\n // find the matching file given the requested url\n const cleaned = cleanFilePath(url.replace(viewer.package, ''));\n const fileName = fileNames\n .filter(name => {\n\n // check if the end of file and url are the same\n const len = Math.min(name.length, cleaned.length);\n return cleaned.substr(cleaned.length - len) === name.substr(name.length - len);\n\n }).pop();\n\n if (fileName !== undefined) {\n\n // revoke the url after it's been used\n const bloburl = URL.createObjectURL(files[fileName]);\n requestAnimationFrame(() => URL.revokeObjectURL(bloburl));\n\n return bloburl;\n\n }\n\n return url;\n\n };\n\n // set the source of the element to the most likely intended display model\n const filesNames = Object.keys(files);\n viewer.up = '+Z';\n document.getElementById('up-select').value = viewer.up;\n\n viewer.urdf =\n filesNames\n .filter(n => /urdf$/i.test(n))\n .shift();\n\n });\n\n callback();\n });\n\n}\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tLoaderUtils,\n\tVector3\n} from \"../../../build/three.module.js\";\n/**\n * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files, with automatic detection of type.\n *\n * The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n * Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n * There is perhaps some question as to how valid it is to always assume little-endian-ness.\n * ASCII decoding assumes file is UTF-8.\n *\n * Usage:\n * var loader = new STLLoader();\n * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) {\n * scene.add( new THREE.Mesh( geometry ) );\n * });\n *\n * For binary STLs geometry might contain colors for vertices. To use it:\n * // use the same code to load STL as above\n * if (geometry.hasColors) {\n * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true });\n * } else { .... }\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For example:\n *\n * var materials = [];\n * var nGeometryGroups = geometry.groups.length;\n *\n * var colorMap = ...; // Some logic to index colors.\n *\n * for (var i = 0; i < nGeometryGroups; i++) {\n *\n *\t\tvar material = new THREE.MeshPhongMaterial({\n *\t\t\tcolor: colorMap[i],\n *\t\t\twireframe: false\n *\t\t});\n *\n * }\n *\n * materials.push(material);\n * var mesh = new THREE.Mesh(geometry, materials);\n */\n\n\nvar STLLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nSTLLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: STLLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tvar expect, face_size, n_faces, reader;\n\t\t\treader = new DataView( data );\n\t\t\tface_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tn_faces = reader.getUint32( 80, true );\n\t\t\texpect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful. So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tvar solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( var off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( var i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tvar reader = new DataView( data );\n\t\t\tvar faces = reader.getUint32( 80, true );\n\n\t\t\tvar r, g, b, hasColors = false, colors;\n\t\t\tvar defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( var index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar dataOffset = 84;\n\t\t\tvar faceLength = 12 * 4 + 2;\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tvar normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tfor ( var face = 0; face < faces; face ++ ) {\n\n\t\t\t\tvar start = dataOffset + face * faceLength;\n\t\t\t\tvar normalX = reader.getFloat32( start, true );\n\t\t\t\tvar normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tvar normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tvar packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tvar vertexstart = start + i * 12;\n\t\t\t\t\tvar componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolors[ componentIdx ] = r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\t\t\tvar patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tvar patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tvar faceCounter = 0;\n\n\t\t\tvar patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tvar patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tvar patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tvar vertices = [];\n\t\t\tvar normals = [];\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar result;\n\n\t\t\tvar groupCount = 0;\n\t\t\tvar startVertex = 0;\n\t\t\tvar endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tvar solid = result[ 0 ];\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tvar vertexCountPerFace = 0;\n\t\t\t\t\tvar normalCountPerFace = 0;\n\n\t\t\t\t\tvar text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tvar start = startVertex;\n\t\t\t\tvar count = endVertex - startVertex;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn LoaderUtils.decodeText( new Uint8Array( buffer ) );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tvar array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( var i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tvar binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n} );\n\nexport { STLLoader };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\t\tthis.ktx2Loader = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\n\n\t\t\tthis.ktx2Loader = ktx2Loader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager,\n\t\t\t\tktx2Loader: this.ktx2Loader\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Transmission Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n\t */\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * BasisU Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n\t * (draft PR https://github.com/KhronosGroup/glTF/pull/1751)\n\t */\n\tfunction GLTFTextureBasisUExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ this.name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype._markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.lightCache, nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t};\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tvar ref = object.clone();\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tpending.push( func( extensions[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar loader;\n\n\t\tif ( source.uri ) {\n\n\t\t\tloader = options.manager.getHandler( source.uri );\n\n\t\t}\n\n\t\tif ( ! loader ) {\n\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t: this.textureLoader;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\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\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\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\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.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\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.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tvar lightIndex = nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light;\n\n\t\t\t\tpending.push( parser.getDependency( 'light', lightIndex ).then( function ( light ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.lightCache, lightIndex, light );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","import {\n\tFileLoader,\n\tLoader,\n\tTexture\n} from \"../../../build/three.module.js\";\n\nvar TGALoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nTGALoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TGALoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttexture.image = scope.parse( buffer );\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tparse: function ( buffer ) {\n\n\t\t// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js\n\n\t\tfunction tgaCheckHeader( header ) {\n\n\t\t\tswitch ( header.image_type ) {\n\n\t\t\t\t// check indexed type\n\n\t\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\t\tif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// check colormap type\n\n\t\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\t\tif ( header.colormap_type ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// What the need of a file without data ?\n\n\t\t\t\tcase TGA_TYPE_NO_DATA:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t\t\t\t// Invalid type ?\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type \"%s\".', header.image_type );\n\n\t\t\t}\n\n\t\t\t// check image width and height\n\n\t\t\tif ( header.width <= 0 || header.height <= 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid image size.' );\n\n\t\t\t}\n\n\t\t\t// check image pixel size\n\n\t\t\tif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&\n\t\t\t\theader.pixel_size !== 24 && header.pixel_size !== 32 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid pixel size \"%s\".', header.pixel_size );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// parse tga image buffer\n\n\t\tfunction tgaParse( use_rle, use_pal, header, offset, data ) {\n\n\t\t\tvar pixel_data,\n\t\t\t\tpixel_size,\n\t\t\t\tpixel_total,\n\t\t\t\tpalettes;\n\n\t\t\tpixel_size = header.pixel_size >> 3;\n\t\t\tpixel_total = header.width * header.height * pixel_size;\n\n\t\t\t // read palettes\n\n\t\t\t if ( use_pal ) {\n\n\t\t\t\t palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );\n\n\t\t\t }\n\n\t\t\t // read RLE\n\n\t\t\t if ( use_rle ) {\n\n\t\t\t\t pixel_data = new Uint8Array( pixel_total );\n\n\t\t\t\tvar c, count, i;\n\t\t\t\tvar shift = 0;\n\t\t\t\tvar pixels = new Uint8Array( pixel_size );\n\n\t\t\t\twhile ( shift < pixel_total ) {\n\n\t\t\t\t\tc = data[ offset ++ ];\n\t\t\t\t\tcount = ( c & 0x7f ) + 1;\n\n\t\t\t\t\t// RLE pixels\n\n\t\t\t\t\tif ( c & 0x80 ) {\n\n\t\t\t\t\t\t// bind pixel tmp array\n\n\t\t\t\t\t\tfor ( i = 0; i < pixel_size; ++ i ) {\n\n\t\t\t\t\t\t\tpixels[ i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// copy pixel array\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data.set( pixels, shift + i * pixel_size );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += pixel_size * count;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// raw pixels\n\n\t\t\t\t\t\tcount *= pixel_size;\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data[ shift + i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += count;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t } else {\n\n\t\t\t\t// raw pixels\n\n\t\t\t\tpixel_data = data.subarray(\n\t\t\t\t\t offset, offset += ( use_pal ? header.width * header.height : pixel_total )\n\t\t\t\t);\n\n\t\t\t }\n\n\t\t\t return {\n\t\t\t\tpixel_data: pixel_data,\n\t\t\t\tpalettes: palettes\n\t\t\t };\n\n\t\t}\n\n\t\tfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {\n\n\t\t\tvar colormap = palettes;\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\tcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 ); // Inversed ?\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) >> 3;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction getTgaRGBA( data, width, height, image, palette ) {\n\n\t\t\tvar x_start,\n\t\t\t\ty_start,\n\t\t\t\tx_step,\n\t\t\t\ty_step,\n\t\t\t\tx_end,\n\t\t\t\ty_end;\n\n\t\t\tswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {\n\n\t\t\t\tdefault:\n\t\t\t\tcase TGA_ORIGIN_UL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_UR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( use_grey ) {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 24:\n\t\t\t\t\t\ttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\ttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Load image data according to specific method\n\t\t\t// var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';\n\t\t\t// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// TGA constants\n\n\t\tvar TGA_TYPE_NO_DATA = 0,\n\t\t\tTGA_TYPE_INDEXED = 1,\n\t\t\tTGA_TYPE_RGB = 2,\n\t\t\tTGA_TYPE_GREY = 3,\n\t\t\tTGA_TYPE_RLE_INDEXED = 9,\n\t\t\tTGA_TYPE_RLE_RGB = 10,\n\t\t\tTGA_TYPE_RLE_GREY = 11,\n\n\t\t\tTGA_ORIGIN_MASK = 0x30,\n\t\t\tTGA_ORIGIN_SHIFT = 0x04,\n\t\t\tTGA_ORIGIN_BL = 0x00,\n\t\t\tTGA_ORIGIN_BR = 0x01,\n\t\t\tTGA_ORIGIN_UL = 0x02,\n\t\t\tTGA_ORIGIN_UR = 0x03;\n\n\t\tif ( buffer.length < 19 ) console.error( 'THREE.TGALoader: Not enough data to contain header.' );\n\n\t\tvar content = new Uint8Array( buffer ),\n\t\t\toffset = 0,\n\t\t\theader = {\n\t\t\t\tid_length: content[ offset ++ ],\n\t\t\t\tcolormap_type: content[ offset ++ ],\n\t\t\t\timage_type: content[ offset ++ ],\n\t\t\t\tcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_size: content[ offset ++ ],\n\t\t\t\torigin: [\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8\n\t\t\t\t],\n\t\t\t\twidth: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\theight: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tpixel_size: content[ offset ++ ],\n\t\t\t\tflags: content[ offset ++ ]\n\t\t\t};\n\n\t\t// check tga if it is valid format\n\n\t\ttgaCheckHeader( header );\n\n\t\tif ( header.id_length + offset > buffer.length ) {\n\n\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t}\n\n\t\t// skip the needn't data\n\n\t\toffset += header.id_length;\n\n\t\t// get targa information about RLE compression and palette\n\n\t\tvar use_rle = false,\n\t\t\tuse_pal = false,\n\t\t\tuse_grey = false;\n\n\t\tswitch ( header.image_type ) {\n\n\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tuse_rle = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t//\n\n\t\tvar useOffscreen = typeof OffscreenCanvas !== 'undefined';\n\n\t\tvar canvas = useOffscreen ? new OffscreenCanvas( header.width, header.height ) : document.createElement( 'canvas' );\n\t\tcanvas.width = header.width;\n\t\tcanvas.height = header.height;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tvar imageData = context.createImageData( header.width, header.height );\n\n\t\tvar result = tgaParse( use_rle, use_pal, header, offset, content );\n\t\tgetTgaRGBA( imageData.data, header.width, header.height, result.pixel_data, result.palettes );\n\n\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\treturn useOffscreen ? canvas.transferToImageBitmap() : canvas;\n\n\t}\n\n} );\n\nexport { TGALoader };\n","import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTextureLoader,\n\tVector3,\n\tVectorKeyframeTrack\n} from \"../../../build/three.module.js\";\nimport { TGALoader } from \"../loaders/TGALoader.js\";\n\nvar ColladaLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nColladaLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ColladaLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\toptions: {\n\n\t\tset convertUpAxis( value ) {\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.' );\n\n\t\t}\n\n\t},\n\n\tparse: function ( text, path ) {\n\n\t\tfunction getElementsByTagName( xml, name ) {\n\n\t\t\t// Non recursive xml.getElementsByTagName() ...\n\n\t\t\tvar array = [];\n\t\t\tvar childNodes = xml.childNodes;\n\n\t\t\tfor ( var i = 0, l = childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = childNodes[ i ];\n\n\t\t\t\tif ( child.nodeName === name ) {\n\n\t\t\t\t\tarray.push( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseStrings( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parts[ i ];\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseFloats( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseFloat( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseInts( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseInt( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseId( text ) {\n\n\t\t\treturn text.substring( 1 );\n\n\t\t}\n\n\t\tfunction generateId() {\n\n\t\t\treturn 'three_default_' + ( count ++ );\n\n\t\t}\n\n\t\tfunction isEmpty( object ) {\n\n\t\t\treturn Object.keys( object ).length === 0;\n\n\t\t}\n\n\t\t// asset\n\n\t\tfunction parseAsset( xml ) {\n\n\t\t\treturn {\n\t\t\t\tunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),\n\t\t\t\tupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseAssetUnit( xml ) {\n\n\t\t\tif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {\n\n\t\t\t\treturn parseFloat( xml.getAttribute( 'meter' ) );\n\n\t\t\t} else {\n\n\t\t\t\treturn 1; // default 1 meter\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAssetUpAxis( xml ) {\n\n\t\t\treturn xml !== undefined ? xml.textContent : 'Y_UP';\n\n\t\t}\n\n\t\t// library\n\n\t\tfunction parseLibrary( xml, libraryName, nodeName, parser ) {\n\n\t\t\tvar library = getElementsByTagName( xml, libraryName )[ 0 ];\n\n\t\t\tif ( library !== undefined ) {\n\n\t\t\t\tvar elements = getElementsByTagName( library, nodeName );\n\n\t\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\t\tparser( elements[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildLibrary( data, builder ) {\n\n\t\t\tfor ( var name in data ) {\n\n\t\t\t\tvar object = data[ name ];\n\t\t\t\tobject.build = builder( data[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// get\n\n\t\tfunction getBuild( data, builder ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\tdata.build = builder( data );\n\n\t\t\treturn data.build;\n\n\t\t}\n\n\t\t// animation\n\n\t\tfunction parseAnimation( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {},\n\t\t\t\tsamplers: {},\n\t\t\t\tchannels: {}\n\t\t\t};\n\n\t\t\tvar hasChildren = false;\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.samplers[ id ] = parseAnimationSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'channel':\n\t\t\t\t\t\tid = child.getAttribute( 'target' );\n\t\t\t\t\t\tdata.channels[ id ] = parseAnimationChannel( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'animation':\n\t\t\t\t\t\t// hierarchy of related animations\n\t\t\t\t\t\tparseAnimation( child );\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasChildren === false ) {\n\n\t\t\t\t// since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment\n\n\t\t\t\tlibrary.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimationSampler( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {},\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseAnimationChannel( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tvar target = xml.getAttribute( 'target' );\n\n\t\t\t// parsing SID Addressing Syntax\n\n\t\t\tvar parts = target.split( '/' );\n\n\t\t\tvar id = parts.shift();\n\t\t\tvar sid = parts.shift();\n\n\t\t\t// check selection syntax\n\n\t\t\tvar arraySyntax = ( sid.indexOf( '(' ) !== - 1 );\n\t\t\tvar memberSyntax = ( sid.indexOf( '.' ) !== - 1 );\n\n\t\t\tif ( memberSyntax ) {\n\n\t\t\t\t// member selection access\n\n\t\t\t\tparts = sid.split( '.' );\n\t\t\t\tsid = parts.shift();\n\t\t\t\tdata.member = parts.shift();\n\n\t\t\t} else if ( arraySyntax ) {\n\n\t\t\t\t// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.\n\n\t\t\t\tvar indices = sid.split( '(' );\n\t\t\t\tsid = indices.shift();\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i ++ ) {\n\n\t\t\t\t\tindices[ i ] = parseInt( indices[ i ].replace( /\\)/, '' ) );\n\n\t\t\t\t}\n\n\t\t\t\tdata.indices = indices;\n\n\t\t\t}\n\n\t\t\tdata.id = id;\n\t\t\tdata.sid = sid;\n\n\t\t\tdata.arraySyntax = arraySyntax;\n\t\t\tdata.memberSyntax = memberSyntax;\n\n\t\t\tdata.sampler = parseId( xml.getAttribute( 'source' ) );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildAnimation( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar channels = data.channels;\n\t\t\tvar samplers = data.samplers;\n\t\t\tvar sources = data.sources;\n\n\t\t\tfor ( var target in channels ) {\n\n\t\t\t\tif ( channels.hasOwnProperty( target ) ) {\n\n\t\t\t\t\tvar channel = channels[ target ];\n\t\t\t\t\tvar sampler = samplers[ channel.sampler ];\n\n\t\t\t\t\tvar inputId = sampler.inputs.INPUT;\n\t\t\t\t\tvar outputId = sampler.inputs.OUTPUT;\n\n\t\t\t\t\tvar inputSource = sources[ inputId ];\n\t\t\t\t\tvar outputSource = sources[ outputId ];\n\n\t\t\t\t\tvar animation = buildAnimationChannel( channel, inputSource, outputSource );\n\n\t\t\t\t\tcreateKeyframeTracks( animation, tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction getAnimation( id ) {\n\n\t\t\treturn getBuild( library.animations[ id ], buildAnimation );\n\n\t\t}\n\n\t\tfunction buildAnimationChannel( channel, inputSource, outputSource ) {\n\n\t\t\tvar node = library.nodes[ channel.id ];\n\t\t\tvar object3D = getNode( node.id );\n\n\t\t\tvar transform = node.transforms[ channel.sid ];\n\t\t\tvar defaultMatrix = node.matrix.clone().transpose();\n\n\t\t\tvar time, stride;\n\t\t\tvar i, il, j, jl;\n\n\t\t\tvar data = {};\n\n\t\t\t// the collada spec allows the animation of data in various ways.\n\t\t\t// depending on the transform type (matrix, translate, rotate, scale), we execute different logic\n\n\t\t\tswitch ( transform ) {\n\n\t\t\t\tcase 'matrix':\n\n\t\t\t\t\tfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\ttime = inputSource.array[ i ];\n\t\t\t\t\t\tstride = i * outputSource.stride;\n\n\t\t\t\t\t\tif ( data[ time ] === undefined ) data[ time ] = {};\n\n\t\t\t\t\t\tif ( channel.arraySyntax === true ) {\n\n\t\t\t\t\t\t\tvar value = outputSource.array[ stride ];\n\t\t\t\t\t\t\tvar index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];\n\n\t\t\t\t\t\t\tdata[ time ][ index ] = value;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tdata[ time ][ j ] = outputSource.array[ stride + j ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'scale':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tvar keyframes = prepareAnimationData( data, defaultMatrix );\n\n\t\t\tvar animation = {\n\t\t\t\tname: object3D.uuid,\n\t\t\t\tkeyframes: keyframes\n\t\t\t};\n\n\t\t\treturn animation;\n\n\t\t}\n\n\t\tfunction prepareAnimationData( data, defaultMatrix ) {\n\n\t\t\tvar keyframes = [];\n\n\t\t\t// transfer data into a sortable array\n\n\t\t\tfor ( var time in data ) {\n\n\t\t\t\tkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );\n\n\t\t\t}\n\n\t\t\t// ensure keyframes are sorted by time\n\n\t\t\tkeyframes.sort( ascending );\n\n\t\t\t// now we clean up all animation data, so we can use them for keyframe tracks\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\ttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );\n\n\t\t\t}\n\n\t\t\treturn keyframes;\n\n\t\t\t// array sort function\n\n\t\t\tfunction ascending( a, b ) {\n\n\t\t\t\treturn a.time - b.time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\tfunction createKeyframeTracks( animation, tracks ) {\n\n\t\t\tvar keyframes = animation.keyframes;\n\t\t\tvar name = animation.name;\n\n\t\t\tvar times = [];\n\t\t\tvar positionData = [];\n\t\t\tvar quaternionData = [];\n\t\t\tvar scaleData = [];\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tvar time = keyframe.time;\n\t\t\t\tvar value = keyframe.value;\n\n\t\t\t\tmatrix.fromArray( value ).transpose();\n\t\t\t\tmatrix.decompose( position, quaternion, scale );\n\n\t\t\t\ttimes.push( time );\n\t\t\t\tpositionData.push( position.x, position.y, position.z );\n\t\t\t\tquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );\n\t\t\t\tscaleData.push( scale.x, scale.y, scale.z );\n\n\t\t\t}\n\n\t\t\tif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );\n\t\t\tif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );\n\t\t\tif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction transformAnimationData( keyframes, property, defaultValue ) {\n\n\t\t\tvar keyframe;\n\n\t\t\tvar empty = true;\n\t\t\tvar i, l;\n\n\t\t\t// check, if values of a property are missing in our keyframes\n\n\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === undefined ) {\n\n\t\t\t\t\tkeyframe.value[ property ] = null; // mark as missing\n\n\t\t\t\t} else {\n\n\t\t\t\t\tempty = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( empty === true ) {\n\n\t\t\t\t// no values at all, so we set a default value\n\n\t\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\t\tkeyframe.value[ property ] = defaultValue;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// filling gaps\n\n\t\t\t\tcreateMissingKeyframes( keyframes, property );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createMissingKeyframes( keyframes, property ) {\n\n\t\t\tvar prev, next;\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === null ) {\n\n\t\t\t\t\tprev = getPrev( keyframes, i, property );\n\t\t\t\t\tnext = getNext( keyframes, i, property );\n\n\t\t\t\t\tif ( prev === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = next.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( next === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = prev.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinterpolate( keyframe, prev, next, property );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getPrev( keyframes, i, property ) {\n\n\t\t\twhile ( i >= 0 ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti --;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction getNext( keyframes, i, property ) {\n\n\t\t\twhile ( i < keyframes.length ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction interpolate( key, prev, next, property ) {\n\n\t\t\tif ( ( next.time - prev.time ) === 0 ) {\n\n\t\t\t\tkey.value[ property ] = prev.value[ property ];\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];\n\n\t\t}\n\n\t\t// animation clips\n\n\t\tfunction parseAnimationClip( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'id' ) || 'default',\n\t\t\t\tstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),\n\t\t\t\tend: parseFloat( xml.getAttribute( 'end' ) || 0 ),\n\t\t\t\tanimations: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_animation':\n\t\t\t\t\t\tdata.animations.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.clips[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildAnimationClip( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar name = data.name;\n\t\t\tvar duration = ( data.end - data.start ) || - 1;\n\t\t\tvar animations = data.animations;\n\n\t\t\tfor ( var i = 0, il = animations.length; i < il; i ++ ) {\n\n\t\t\t\tvar animationTracks = getAnimation( animations[ i ] );\n\n\t\t\t\tfor ( var j = 0, jl = animationTracks.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttracks.push( animationTracks[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, duration, tracks );\n\n\t\t}\n\n\t\tfunction getAnimationClip( id ) {\n\n\t\t\treturn getBuild( library.clips[ id ], buildAnimationClip );\n\n\t\t}\n\n\t\t// controller\n\n\t\tfunction parseController( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'skin':\n\t\t\t\t\t\t// there is exactly one skin per controller\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.skin = parseSkin( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'morph':\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSkin( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_shape_matrix':\n\t\t\t\t\t\tdata.bindShapeMatrix = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tvar id = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'joints':\n\t\t\t\t\t\tdata.joints = parseJoints( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertex_weights':\n\t\t\t\t\t\tdata.vertexWeights = parseVertexWeights( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseJoints( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseVertexWeights( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = { id: id, offset: offset };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tdata.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v':\n\t\t\t\t\t\tdata.v = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildController( data ) {\n\n\t\t\tvar build = {\n\t\t\t\tid: data.id\n\t\t\t};\n\n\t\t\tvar geometry = library.geometries[ build.id ];\n\n\t\t\tif ( data.skin !== undefined ) {\n\n\t\t\t\tbuild.skin = buildSkin( data.skin );\n\n\t\t\t\t// we enhance the 'sources' property of the corresponding geometry with our skin data\n\n\t\t\t\tgeometry.sources.skinIndices = build.skin.indices;\n\t\t\t\tgeometry.sources.skinWeights = build.skin.weights;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildSkin( data ) {\n\n\t\t\tvar BONE_LIMIT = 4;\n\n\t\t\tvar build = {\n\t\t\t\tjoints: [], // this must be an array to preserve the joint order\n\t\t\t\tindices: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t},\n\t\t\t\tweights: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertexWeights = data.vertexWeights;\n\n\t\t\tvar vcount = vertexWeights.vcount;\n\t\t\tvar v = vertexWeights.v;\n\t\t\tvar jointOffset = vertexWeights.inputs.JOINT.offset;\n\t\t\tvar weightOffset = vertexWeights.inputs.WEIGHT.offset;\n\n\t\t\tvar jointSource = data.sources[ data.joints.inputs.JOINT ];\n\t\t\tvar inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];\n\n\t\t\tvar weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;\n\t\t\tvar stride = 0;\n\n\t\t\tvar i, j, l;\n\n\t\t\t// procces skin data for each vertex\n\n\t\t\tfor ( i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\tvar jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex\n\t\t\t\tvar vertexSkinData = [];\n\n\t\t\t\tfor ( j = 0; j < jointCount; j ++ ) {\n\n\t\t\t\t\tvar skinIndex = v[ stride + jointOffset ];\n\t\t\t\t\tvar weightId = v[ stride + weightOffset ];\n\t\t\t\t\tvar skinWeight = weights[ weightId ];\n\n\t\t\t\t\tvertexSkinData.push( { index: skinIndex, weight: skinWeight } );\n\n\t\t\t\t\tstride += 2;\n\n\t\t\t\t}\n\n\t\t\t\t// we sort the joints in descending order based on the weights.\n\t\t\t\t// this ensures, we only procced the most important joints of the vertex\n\n\t\t\t\tvertexSkinData.sort( descending );\n\n\t\t\t\t// now we provide for each vertex a set of four index and weight values.\n\t\t\t\t// the order of the skin data matches the order of vertices\n\n\t\t\t\tfor ( j = 0; j < BONE_LIMIT; j ++ ) {\n\n\t\t\t\t\tvar d = vertexSkinData[ j ];\n\n\t\t\t\t\tif ( d !== undefined ) {\n\n\t\t\t\t\t\tbuild.indices.array.push( d.index );\n\t\t\t\t\t\tbuild.weights.array.push( d.weight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbuild.indices.array.push( 0 );\n\t\t\t\t\t\tbuild.weights.array.push( 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup bind matrix\n\n\t\t\tif ( data.bindShapeMatrix ) {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();\n\n\t\t\t} else {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().identity();\n\n\t\t\t}\n\n\t\t\t// process bones and inverse bind matrix data\n\n\t\t\tfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {\n\n\t\t\t\tvar name = jointSource.array[ i ];\n\t\t\t\tvar boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();\n\n\t\t\t\tbuild.joints.push( { name: name, boneInverse: boneInverse } );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t\t// array sort function\n\n\t\t\tfunction descending( a, b ) {\n\n\t\t\t\treturn b.weight - a.weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getController( id ) {\n\n\t\t\treturn getBuild( library.controllers[ id ], buildController );\n\n\t\t}\n\n\t\t// image\n\n\t\tfunction parseImage( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent\n\t\t\t};\n\n\t\t\tlibrary.images[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildImage( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data.init_from;\n\n\t\t}\n\n\t\tfunction getImage( id ) {\n\n\t\t\tvar data = library.images[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildImage );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find image with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// effect\n\n\t\tfunction parseEffect( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'profile_COMMON':\n\t\t\t\t\t\tdata.profile = parseEffectProfileCOMMON( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.effects[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseEffectProfileCOMMON( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsurfaces: {},\n\t\t\t\tsamplers: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'newparam':\n\t\t\t\t\t\tparseEffectNewparam( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectNewparam( xml, data ) {\n\n\t\t\tvar sid = xml.getAttribute( 'sid' );\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'surface':\n\t\t\t\t\t\tdata.surfaces[ sid ] = parseEffectSurface( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler2D':\n\t\t\t\t\t\tdata.samplers[ sid ] = parseEffectSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectSurface( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'init_from':\n\t\t\t\t\t\tdata.init_from = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectSampler( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.source = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'constant':\n\t\t\t\t\tcase 'lambert':\n\t\t\t\t\tcase 'blinn':\n\t\t\t\t\tcase 'phong':\n\t\t\t\t\t\tdata.type = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseEffectParameters( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectParameter( child );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tdata[ child.nodeName ] = {\n\t\t\t\t\t\t\topaque: child.getAttribute( 'opaque' ),\n\t\t\t\t\t\t\tdata: parseEffectParameter( child )\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameter( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'float':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTexture( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttechnique: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tparseEffectParameterTextureExtra( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtra( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tparseEffectParameterTextureExtraTechnique( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtraTechnique( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'repeatU':\n\t\t\t\t\tcase 'repeatV':\n\t\t\t\t\tcase 'offsetU':\n\t\t\t\t\tcase 'offsetV':\n\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'wrapU':\n\t\t\t\t\tcase 'wrapV':\n\n\t\t\t\t\t\t// some files have values for wrapU/wrapV which become NaN via parseInt\n\n\t\t\t\t\t\tif ( child.textContent.toUpperCase() === 'TRUE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 1;\n\n\t\t\t\t\t\t} else if ( child.textContent.toUpperCase() === 'FALSE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseInt( child.textContent );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectExtra( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectExtraTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseInt( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildEffect( data ) {\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getEffect( id ) {\n\n\t\t\treturn getBuild( library.effects[ id ], buildEffect );\n\n\t\t}\n\n\t\t// material\n\n\t\tfunction parseMaterial( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_effect':\n\t\t\t\t\t\tdata.url = parseId( child.getAttribute( 'url' ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.materials[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction getTextureLoader( image ) {\n\n\t\t\tvar loader;\n\n\t\t\tvar extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/\n\t\t\textension = extension.toLowerCase();\n\n\t\t\tswitch ( extension ) {\n\n\t\t\t\tcase 'tga':\n\t\t\t\t\tloader = tgaLoader;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tloader = textureLoader;\n\n\t\t\t}\n\n\t\t\treturn loader;\n\n\t\t}\n\n\t\tfunction buildMaterial( data ) {\n\n\t\t\tvar effect = getEffect( data.url );\n\t\t\tvar technique = effect.profile.technique;\n\t\t\tvar extra = effect.profile.extra;\n\n\t\t\tvar material;\n\n\t\t\tswitch ( technique.type ) {\n\n\t\t\t\tcase 'phong':\n\t\t\t\tcase 'blinn':\n\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lambert':\n\t\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmaterial = new MeshBasicMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tmaterial.name = data.name || '';\n\n\t\t\tfunction getTexture( textureObject ) {\n\n\t\t\t\tvar sampler = effect.profile.samplers[ textureObject.id ];\n\t\t\t\tvar image = null;\n\n\t\t\t\t// get image\n\n\t\t\t\tif ( sampler !== undefined ) {\n\n\t\t\t\t\tvar surface = effect.profile.surfaces[ sampler.source ];\n\t\t\t\t\timage = getImage( surface.init_from );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );\n\t\t\t\t\timage = getImage( textureObject.id );\n\n\t\t\t\t}\n\n\t\t\t\t// create texture if image is avaiable\n\n\t\t\t\tif ( image !== null ) {\n\n\t\t\t\t\tvar loader = getTextureLoader( image );\n\n\t\t\t\t\tif ( loader !== undefined ) {\n\n\t\t\t\t\t\tvar texture = loader.load( image );\n\n\t\t\t\t\t\tvar extra = textureObject.extra;\n\n\t\t\t\t\t\tif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {\n\n\t\t\t\t\t\t\tvar technique = extra.technique;\n\n\t\t\t\t\t\t\ttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\t\t\t\t\t\ttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );\n\t\t\t\t\t\t\ttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttexture.wrapS = RepeatWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t create texture with ID:', textureObject.id );\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parameters = technique.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvar parameter = parameters[ key ];\n\n\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\t\tif ( parameter.color ) material.color.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.map = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\t\tif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tif ( parameter.texture ) material.lightMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tif ( parameter.float && material.shininess ) material.shininess = parameter.float;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\t\tif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar transparent = parameters[ 'transparent' ];\n\t\t\tvar transparency = parameters[ 'transparency' ];\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparency === undefined && transparent ) {\n\n\t\t\t\ttransparency = {\n\t\t\t\t\tfloat: 1\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparent === undefined && transparency ) {\n\n\t\t\t\ttransparent = {\n\t\t\t\t\topaque: 'A_ONE',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcolor: [ 1, 1, 1, 1 ]\n\t\t\t\t\t} };\n\n\t\t\t}\n\n\t\t\tif ( transparent && transparency ) {\n\n\t\t\t\t// handle case if a texture exists but no color\n\n\t\t\t\tif ( transparent.data.texture ) {\n\n\t\t\t\t\t// we do not set an alpha map (see #13792)\n\n\t\t\t\t\tmaterial.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = transparent.data.color;\n\n\t\t\t\t\tswitch ( transparent.opaque ) {\n\n\t\t\t\t\t\tcase 'A_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 3 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'A_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 0 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.', transparent.opaque );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.opacity < 1 ) material.transparent = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction getMaterial( id ) {\n\n\t\t\treturn getBuild( library.materials[ id ], buildMaterial );\n\n\t\t}\n\n\t\t// camera\n\n\t\tfunction parseCamera( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'optics':\n\t\t\t\t\t\tdata.optics = parseCameraOptics( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseCameraOptics( xml ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\treturn parseCameraTechnique( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {};\n\n\t\t}\n\n\t\tfunction parseCameraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'perspective':\n\t\t\t\t\tcase 'orthographic':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseCameraParameters( child );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseCameraParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'xfov':\n\t\t\t\t\tcase 'yfov':\n\t\t\t\t\tcase 'xmag':\n\t\t\t\t\tcase 'ymag':\n\t\t\t\t\tcase 'znear':\n\t\t\t\t\tcase 'zfar':\n\t\t\t\t\tcase 'aspect_ratio':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildCamera( data ) {\n\n\t\t\tvar camera;\n\n\t\t\tswitch ( data.optics.technique ) {\n\n\t\t\t\tcase 'perspective':\n\t\t\t\t\tcamera = new PerspectiveCamera(\n\t\t\t\t\t\tdata.optics.parameters.yfov,\n\t\t\t\t\t\tdata.optics.parameters.aspect_ratio,\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'orthographic':\n\t\t\t\t\tvar ymag = data.optics.parameters.ymag;\n\t\t\t\t\tvar xmag = data.optics.parameters.xmag;\n\t\t\t\t\tvar aspectRatio = data.optics.parameters.aspect_ratio;\n\n\t\t\t\t\txmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;\n\t\t\t\t\tymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;\n\n\t\t\t\t\txmag *= 0.5;\n\t\t\t\t\tymag *= 0.5;\n\n\t\t\t\t\tcamera = new OrthographicCamera(\n\t\t\t\t\t\t- xmag, xmag, ymag, - ymag, // left, right, top, bottom\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcamera.name = data.name || '';\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tfunction getCamera( id ) {\n\n\t\t\tvar data = library.cameras[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildCamera );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find camera with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// light\n\n\t\tfunction parseLight( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tdata = parseLightTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.lights[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseLightTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\tcase 'point':\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\tcase 'ambient':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseLightParameters( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseLightParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.color = new Color().fromArray( array );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'falloff_angle':\n\t\t\t\t\t\tdata.falloffAngle = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'quadratic_attenuation':\n\t\t\t\t\t\tvar f = parseFloat( child.textContent );\n\t\t\t\t\t\tdata.distance = f ? Math.sqrt( 1 / f ) : 0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildLight( data ) {\n\n\t\t\tvar light;\n\n\t\t\tswitch ( data.technique ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlight = new DirectionalLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlight = new PointLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlight = new SpotLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ambient':\n\t\t\t\t\tlight = new AmbientLight();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( data.parameters.color ) light.color.copy( data.parameters.color );\n\t\t\tif ( data.parameters.distance ) light.distance = data.parameters.distance;\n\n\t\t\treturn light;\n\n\t\t}\n\n\t\tfunction getLight( id ) {\n\n\t\t\tvar data = library.lights[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildLight );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find light with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// geometry\n\n\t\tfunction parseGeometry( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tsources: {},\n\t\t\t\tvertices: {},\n\t\t\t\tprimitives: []\n\t\t\t};\n\n\t\t\tvar mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];\n\n\t\t\t// the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep\n\t\t\tif ( mesh === undefined ) return;\n\n\t\t\tfor ( var i = 0; i < mesh.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = mesh.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id = child.getAttribute( 'id' );\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertices':\n\t\t\t\t\t\t// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];\n\t\t\t\t\t\tdata.vertices = parseGeometryVertices( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polygons':\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tdata.primitives.push( parseGeometryPrimitive( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSource( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tarray: [],\n\t\t\t\tstride: 3\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'float_array':\n\t\t\t\t\t\tdata.array = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Name_array':\n\t\t\t\t\t\tdata.array = parseStrings( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tvar accessor = getElementsByTagName( child, 'accessor' )[ 0 ];\n\n\t\t\t\t\t\tif ( accessor !== undefined ) {\n\n\t\t\t\t\t\t\tdata.stride = parseInt( accessor.getAttribute( 'stride' ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryVertices( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryPrimitive( xml ) {\n\n\t\t\tvar primitive = {\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tmaterial: xml.getAttribute( 'material' ),\n\t\t\t\tcount: parseInt( xml.getAttribute( 'count' ) ),\n\t\t\t\tinputs: {},\n\t\t\t\tstride: 0,\n\t\t\t\thasUV: false\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tvar set = parseInt( child.getAttribute( 'set' ) );\n\t\t\t\t\t\tvar inputname = ( set > 0 ? semantic + set : semantic );\n\t\t\t\t\t\tprimitive.inputs[ inputname ] = { id: id, offset: offset };\n\t\t\t\t\t\tprimitive.stride = Math.max( primitive.stride, offset + 1 );\n\t\t\t\t\t\tif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tprimitive.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'p':\n\t\t\t\t\t\tprimitive.p = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn primitive;\n\n\t\t}\n\n\t\tfunction groupPrimitives( primitives ) {\n\n\t\t\tvar build = {};\n\n\t\t\tfor ( var i = 0; i < primitives.length; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];\n\n\t\t\t\tbuild[ primitive.type ].push( primitive );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction checkUVCoordinates( primitives ) {\n\n\t\t\tvar count = 0;\n\n\t\t\tfor ( var i = 0, l = primitives.length; i < l; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( primitive.hasUV === true ) {\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count > 0 && count < primitives.length ) {\n\n\t\t\t\tprimitives.uvsNeedsFix = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildGeometry( data ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertices = data.vertices;\n\t\t\tvar primitives = data.primitives;\n\n\t\t\tif ( primitives.length === 0 ) return {};\n\n\t\t\t// our goal is to create one buffer geometry for a single type of primitives\n\t\t\t// first, we group all primitives by their type\n\n\t\t\tvar groupedPrimitives = groupPrimitives( primitives );\n\n\t\t\tfor ( var type in groupedPrimitives ) {\n\n\t\t\t\tvar primitiveType = groupedPrimitives[ type ];\n\n\t\t\t\t// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)\n\n\t\t\t\tcheckUVCoordinates( primitiveType );\n\n\t\t\t\t// third, create a buffer geometry for each type of primitives\n\n\t\t\t\tbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryType( primitives, sources, vertices ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar position = { array: [], stride: 0 };\n\t\t\tvar normal = { array: [], stride: 0 };\n\t\t\tvar uv = { array: [], stride: 0 };\n\t\t\tvar uv2 = { array: [], stride: 0 };\n\t\t\tvar color = { array: [], stride: 0 };\n\n\t\t\tvar skinIndex = { array: [], stride: 4 };\n\t\t\tvar skinWeight = { array: [], stride: 4 };\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar materialKeys = [];\n\n\t\t\tvar start = 0;\n\n\t\t\tfor ( var p = 0; p < primitives.length; p ++ ) {\n\n\t\t\t\tvar primitive = primitives[ p ];\n\t\t\t\tvar inputs = primitive.inputs;\n\n\t\t\t\t// groups\n\n\t\t\t\tvar count = 0;\n\n\t\t\t\tswitch ( primitive.type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tcount = primitive.count * 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tcount = primitive.count * 3;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polylist':\n\n\t\t\t\t\t\tfor ( var g = 0; g < primitive.count; g ++ ) {\n\n\t\t\t\t\t\t\tvar vc = primitive.vcount[ g ];\n\n\t\t\t\t\t\t\tswitch ( vc ) {\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcount += 3; // single triangle\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tcount += 6; // quad, subdivided into two triangles\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tcount += ( vc - 2 ) * 3; // polylist with more than four vertices\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addGroup( start, count, p );\n\t\t\t\tstart += count;\n\n\t\t\t\t// material\n\n\t\t\t\tif ( primitive.material ) {\n\n\t\t\t\t\tmaterialKeys.push( primitive.material );\n\n\t\t\t\t}\n\n\t\t\t\t// geometry data\n\n\t\t\t\tfor ( var name in inputs ) {\n\n\t\t\t\t\tvar input = inputs[ name ];\n\n\t\t\t\t\tswitch ( name )\t{\n\n\t\t\t\t\t\tcase 'VERTEX':\n\t\t\t\t\t\t\tfor ( var key in vertices ) {\n\n\t\t\t\t\t\t\t\tvar id = vertices[ key ];\n\n\t\t\t\t\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\t\t\t\t\tcase 'POSITION':\n\t\t\t\t\t\t\t\t\t\tvar prevLength = position.array.length;\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, position.array );\n\t\t\t\t\t\t\t\t\t\tposition.stride = sources[ id ].stride;\n\n\t\t\t\t\t\t\t\t\t\tif ( sources.skinWeights && sources.skinIndices ) {\n\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// see #3803\n\n\t\t\t\t\t\t\t\t\t\tif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar count = ( position.array.length - prevLength ) / position.stride;\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// fill missing uv coordinates\n\n\t\t\t\t\t\t\t\t\t\t\t\tuv.array.push( 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );\n\t\t\t\t\t\t\t\t\t\tnormal.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, color.array );\n\t\t\t\t\t\t\t\t\t\tcolor.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv2.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Semantic \"%s\" not handled in geometry build process.', key );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );\n\t\t\t\t\t\t\tnormal.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array );\n\t\t\t\t\t\t\tcolor.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );\n\t\t\t\t\t\t\tuv.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );\n\t\t\t\t\t\t\tuv2.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tif ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );\n\t\t\tif ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );\n\t\t\tif ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );\n\t\t\tif ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );\n\t\t\tif ( uv2.array.length > 0 ) geometry.setAttribute( 'uv2', new Float32BufferAttribute( uv2.array, uv2.stride ) );\n\n\t\t\tif ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );\n\t\t\tif ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );\n\n\t\t\tbuild.data = geometry;\n\t\t\tbuild.type = primitives[ 0 ].type;\n\t\t\tbuild.materialKeys = materialKeys;\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryData( primitive, source, offset, array ) {\n\n\t\t\tvar indices = primitive.p;\n\t\t\tvar stride = primitive.stride;\n\t\t\tvar vcount = primitive.vcount;\n\n\t\t\tfunction pushVector( i ) {\n\n\t\t\t\tvar index = indices[ i + offset ] * sourceStride;\n\t\t\t\tvar length = index + sourceStride;\n\n\t\t\t\tfor ( ; index < length; index ++ ) {\n\n\t\t\t\t\tarray.push( sourceArray[ index ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar sourceArray = source.array;\n\t\t\tvar sourceStride = source.stride;\n\n\t\t\tif ( primitive.vcount !== undefined ) {\n\n\t\t\t\tvar index = 0;\n\n\t\t\t\tfor ( var i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar count = vcount[ i ];\n\n\t\t\t\t\tif ( count === 4 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\t\t\t\t\t\tvar d = index + stride * 3;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( d );\n\t\t\t\t\t\tpushVector( b ); pushVector( c ); pushVector( d );\n\n\t\t\t\t\t} else if ( count === 3 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t} else if ( count > 4 ) {\n\n\t\t\t\t\t\tfor ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\t\tvar b = index + stride * k;\n\t\t\t\t\t\t\tvar c = index + stride * ( k + 1 );\n\n\t\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += stride * count;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += stride ) {\n\n\t\t\t\t\tpushVector( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getGeometry( id ) {\n\n\t\t\treturn getBuild( library.geometries[ id ], buildGeometry );\n\n\t\t}\n\n\t\t// kinematics\n\n\t\tfunction parseKinematicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tjoints: {},\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparseKinematicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildKinematicsModel( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsModel( id ) {\n\n\t\t\treturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );\n\n\t\t}\n\n\t\tfunction parseKinematicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'joint':\n\t\t\t\t\t\tdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseKinematicsJoint( xml ) {\n\n\t\t\tvar data;\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\tdata = parseKinematicsJointParameter( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsJointParameter( xml, data ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\taxis: new Vector3(),\n\t\t\t\tlimits: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 0\n\t\t\t\t},\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tstatic: false,\n\t\t\t\tzeroPosition: 0,\n\t\t\t\tmiddlePosition: 0\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.axis.fromArray( array );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'limits':\n\t\t\t\t\t\tvar max = child.getElementsByTagName( 'max' )[ 0 ];\n\t\t\t\t\t\tvar min = child.getElementsByTagName( 'min' )[ 0 ];\n\n\t\t\t\t\t\tdata.limits.max = parseFloat( max.textContent );\n\t\t\t\t\t\tdata.limits.min = parseFloat( min.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// if min is equal to or greater than max, consider the joint static\n\n\t\t\tif ( data.limits.min >= data.limits.max ) {\n\n\t\t\t\tdata.static = true;\n\n\t\t\t}\n\n\t\t\t// calculate middle position\n\n\t\t\tdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsLink( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tattachments: [],\n\t\t\t\ttransforms: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'attachment_full':\n\t\t\t\t\t\tdata.attachments.push( parseKinematicsAttachment( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsAttachment( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),\n\t\t\t\ttransforms: [],\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsTransform( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttype: xml.nodeName\n\t\t\t};\n\n\t\t\tvar array = parseFloats( xml.textContent );\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tdata.obj = new Matrix4();\n\t\t\t\t\tdata.obj.fromArray( array ).transpose();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tdata.angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// physics\n\n\t\tfunction parsePhysicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\trigidBodies: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'rigid_body':\n\t\t\t\t\t\tdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};\n\t\t\t\t\t\tparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parsePhysicsRigidBody( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparsePhysicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parsePhysicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'inertia':\n\t\t\t\t\t\tdata.inertia = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'mass':\n\t\t\t\t\t\tdata.mass = parseFloats( child.textContent )[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// scene\n\n\t\tfunction parseKinematicsScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tbindJointAxis: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_joint_axis':\n\t\t\t\t\t\tdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;\n\n\t\t}\n\n\t\tfunction parseKinematicsBindJointAxis( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttarget: xml.getAttribute( 'target' ).split( '/' ).pop()\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar param = child.getElementsByTagName( 'param' )[ 0 ];\n\t\t\t\t\t\tdata.axis = param.textContent;\n\t\t\t\t\t\tvar tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];\n\t\t\t\t\t\tdata.jointIndex = tmpJointIndex.substr( 0, tmpJointIndex.length - 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildKinematicsScene( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsScene( id ) {\n\n\t\t\treturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );\n\n\t\t}\n\n\t\tfunction setupKinematics() {\n\n\t\t\tvar kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];\n\t\t\tvar kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];\n\t\t\tvar visualSceneId = Object.keys( library.visualScenes )[ 0 ];\n\n\t\t\tif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;\n\n\t\t\tvar kinematicsModel = getKinematicsModel( kinematicsModelId );\n\t\t\tvar kinematicsScene = getKinematicsScene( kinematicsSceneId );\n\t\t\tvar visualScene = getVisualScene( visualSceneId );\n\n\t\t\tvar bindJointAxis = kinematicsScene.bindJointAxis;\n\t\t\tvar jointMap = {};\n\n\t\t\tfor ( var i = 0, l = bindJointAxis.length; i < l; i ++ ) {\n\n\t\t\t\tvar axis = bindJointAxis[ i ];\n\n\t\t\t\t// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'\n\n\t\t\t\tvar targetElement = collada.querySelector( '[sid=\"' + axis.target + '\"]' );\n\n\t\t\t\tif ( targetElement ) {\n\n\t\t\t\t\t// get the parent of the transform element\n\n\t\t\t\t\tvar parentVisualElement = targetElement.parentElement;\n\n\t\t\t\t\t// connect the joint of the kinematics model with the element in the visual scene\n\n\t\t\t\t\tconnect( axis.jointIndex, parentVisualElement );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction connect( jointIndex, visualElement ) {\n\n\t\t\t\tvar visualElementName = visualElement.getAttribute( 'name' );\n\t\t\t\tvar joint = kinematicsModel.joints[ jointIndex ];\n\n\t\t\t\tvisualScene.traverse( function ( object ) {\n\n\t\t\t\t\tif ( object.name === visualElementName ) {\n\n\t\t\t\t\t\tjointMap[ jointIndex ] = {\n\t\t\t\t\t\t\tobject: object,\n\t\t\t\t\t\t\ttransforms: buildTransformList( visualElement ),\n\t\t\t\t\t\t\tjoint: joint,\n\t\t\t\t\t\t\tposition: joint.zeroPosition\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar m0 = new Matrix4();\n\n\t\t\tkinematics = {\n\n\t\t\t\tjoints: kinematicsModel && kinematicsModel.joints,\n\n\t\t\t\tgetJointValue: function ( jointIndex ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\treturn jointData.position;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\\'t exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetJointValue: function ( jointIndex, value ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\tvar joint = jointData.joint;\n\n\t\t\t\t\t\tif ( value > joint.limits.max || value < joint.limits.min ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );\n\n\t\t\t\t\t\t} else if ( joint.static ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar object = jointData.object;\n\t\t\t\t\t\t\tvar axis = joint.axis;\n\t\t\t\t\t\t\tvar transforms = jointData.transforms;\n\n\t\t\t\t\t\t\tmatrix.identity();\n\n\t\t\t\t\t\t\t// each update, we have to apply all transforms in the correct order\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < transforms.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar transform = transforms[ i ];\n\n\t\t\t\t\t\t\t\t// if there is a connection of the transform node with a joint, apply the joint value\n\n\t\t\t\t\t\t\t\tif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {\n\n\t\t\t\t\t\t\t\t\tswitch ( joint.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tswitch ( transform.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.scale( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tobject.matrix.copy( matrix );\n\t\t\t\t\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t\t\t\tjointMap[ jointIndex ].position = value;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction buildTransformList( node ) {\n\n\t\t\tvar transforms = [];\n\n\t\t\tvar xml = collada.querySelector( '[id=\"' + node.id + '\"]' );\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar matrix = new Matrix4().fromArray( array ).transpose();\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: matrix\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector,\n\t\t\t\t\t\t\tangle: angle\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transforms;\n\n\t\t}\n\n\t\t// nodes\n\n\t\tfunction prepareNodes( xml ) {\n\n\t\t\tvar elements = xml.getElementsByTagName( 'node' );\n\n\t\t\t// ensure all node elements have id attributes\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tvar element = elements[ i ];\n\n\t\t\t\tif ( element.hasAttribute( 'id' ) === false ) {\n\n\t\t\t\t\telement.setAttribute( 'id', generateId() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar matrix = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\tfunction parseNode( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\ttype: xml.getAttribute( 'type' ),\n\t\t\t\tid: xml.getAttribute( 'id' ),\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tmatrix: new Matrix4(),\n\t\t\t\tnodes: [],\n\t\t\t\tinstanceCameras: [],\n\t\t\t\tinstanceControllers: [],\n\t\t\t\tinstanceLights: [],\n\t\t\t\tinstanceGeometries: [],\n\t\t\t\tinstanceNodes: [],\n\t\t\t\ttransforms: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'node':\n\t\t\t\t\t\tdata.nodes.push( child.getAttribute( 'id' ) );\n\t\t\t\t\t\tparseNode( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_camera':\n\t\t\t\t\t\tdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_controller':\n\t\t\t\t\t\tdata.instanceControllers.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_light':\n\t\t\t\t\t\tdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_geometry':\n\t\t\t\t\t\tdata.instanceGeometries.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_node':\n\t\t\t\t\t\tdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.fromArray( array ).transpose() );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvector.fromArray( array );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.scale( vector.fromArray( array ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasNode( data.id ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );\n\n\t\t\t} else {\n\n\t\t\t\tlibrary.nodes[ data.id ] = data;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseNodeInstance( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tid: parseId( xml.getAttribute( 'url' ) ),\n\t\t\t\tmaterials: {},\n\t\t\t\tskeletons: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_material':\n\t\t\t\t\t\tvar instances = child.getElementsByTagName( 'instance_material' );\n\n\t\t\t\t\t\tfor ( var j = 0; j < instances.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar instance = instances[ j ];\n\t\t\t\t\t\t\tvar symbol = instance.getAttribute( 'symbol' );\n\t\t\t\t\t\t\tvar target = instance.getAttribute( 'target' );\n\n\t\t\t\t\t\t\tdata.materials[ symbol ] = parseId( target );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skeleton':\n\t\t\t\t\t\tdata.skeletons.push( parseId( child.textContent ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildSkeleton( skeletons, joints ) {\n\n\t\t\tvar boneData = [];\n\t\t\tvar sortedBoneData = [];\n\n\t\t\tvar i, j, data;\n\n\t\t\t// a skeleton can have multiple root bones. collada expresses this\n\t\t\t// situtation with multiple \"skeleton\" tags per controller instance\n\n\t\t\tfor ( i = 0; i < skeletons.length; i ++ ) {\n\n\t\t\t\tvar skeleton = skeletons[ i ];\n\n\t\t\t\tvar root;\n\n\t\t\t\tif ( hasNode( skeleton ) ) {\n\n\t\t\t\t\troot = getNode( skeleton );\n\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t} else if ( hasVisualScene( skeleton ) ) {\n\n\t\t\t\t\t// handle case where the skeleton refers to the visual scene (#13335)\n\n\t\t\t\t\tvar visualScene = library.visualScenes[ skeleton ];\n\t\t\t\t\tvar children = visualScene.children;\n\n\t\t\t\t\tfor ( var j = 0; j < children.length; j ++ ) {\n\n\t\t\t\t\t\tvar child = children[ j ];\n\n\t\t\t\t\t\tif ( child.type === 'JOINT' ) {\n\n\t\t\t\t\t\t\tvar root = getNode( child.id );\n\t\t\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// sort bone data (the order is defined in the corresponding controller)\n\n\t\t\tfor ( i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < boneData.length; j ++ ) {\n\n\t\t\t\t\tdata = boneData[ j ];\n\n\t\t\t\t\tif ( data.bone.name === joints[ i ].name ) {\n\n\t\t\t\t\t\tsortedBoneData[ i ] = data;\n\t\t\t\t\t\tdata.processed = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add unprocessed bone data at the end of the list\n\n\t\t\tfor ( i = 0; i < boneData.length; i ++ ) {\n\n\t\t\t\tdata = boneData[ i ];\n\n\t\t\t\tif ( data.processed === false ) {\n\n\t\t\t\t\tsortedBoneData.push( data );\n\t\t\t\t\tdata.processed = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup arrays for skeleton creation\n\n\t\t\tvar bones = [];\n\t\t\tvar boneInverses = [];\n\n\t\t\tfor ( i = 0; i < sortedBoneData.length; i ++ ) {\n\n\t\t\t\tdata = sortedBoneData[ i ];\n\n\t\t\t\tbones.push( data.bone );\n\t\t\t\tboneInverses.push( data.boneInverse );\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t}\n\n\t\tfunction buildBoneHierarchy( root, joints, boneData ) {\n\n\t\t\t// setup bone data from visual scene\n\n\t\t\troot.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isBone === true ) {\n\n\t\t\t\t\tvar boneInverse;\n\n\t\t\t\t\t// retrieve the boneInverse from the controller data\n\n\t\t\t\t\tfor ( var i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\t\t\tvar joint = joints[ i ];\n\n\t\t\t\t\t\tif ( joint.name === object.name ) {\n\n\t\t\t\t\t\t\tboneInverse = joint.boneInverse;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( boneInverse === undefined ) {\n\n\t\t\t\t\t\t// Unfortunately, there can be joints in the visual scene that are not part of the\n\t\t\t\t\t\t// corresponding controller. In this case, we have to create a dummy boneInverse matrix\n\t\t\t\t\t\t// for the respective bone. This bone won't affect any vertices, because there are no skin indices\n\t\t\t\t\t\t// and weights defined for it. But we still have to add the bone to the sorted bone list in order to\n\t\t\t\t\t\t// ensure a correct animation of the model.\n\n\t\t\t\t\t\tboneInverse = new Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction buildNode( data ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tvar matrix = data.matrix;\n\t\t\tvar nodes = data.nodes;\n\t\t\tvar type = data.type;\n\t\t\tvar instanceCameras = data.instanceCameras;\n\t\t\tvar instanceControllers = data.instanceControllers;\n\t\t\tvar instanceLights = data.instanceLights;\n\t\t\tvar instanceGeometries = data.instanceGeometries;\n\t\t\tvar instanceNodes = data.instanceNodes;\n\n\t\t\t// nodes\n\n\t\t\tfor ( var i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( nodes[ i ] ) );\n\n\t\t\t}\n\n\t\t\t// instance cameras\n\n\t\t\tfor ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceCamera = getCamera( instanceCameras[ i ] );\n\n\t\t\t\tif ( instanceCamera !== null ) {\n\n\t\t\t\t\tobjects.push( instanceCamera.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance controllers\n\n\t\t\tfor ( var i = 0, l = instanceControllers.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceControllers[ i ];\n\t\t\t\tvar controller = getController( instance.id );\n\t\t\t\tvar geometries = getGeometry( controller.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tvar skeletons = instance.skeletons;\n\t\t\t\tvar joints = controller.skin.joints;\n\n\t\t\t\tvar skeleton = buildSkeleton( skeletons, joints );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = newObjects[ j ];\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.bind( skeleton, controller.skin.bindMatrix );\n\t\t\t\t\t\tobject.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance lights\n\n\t\t\tfor ( var i = 0, l = instanceLights.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceLight = getLight( instanceLights[ i ] );\n\n\t\t\t\tif ( instanceLight !== null ) {\n\n\t\t\t\t\tobjects.push( instanceLight.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance geometries\n\n\t\t\tfor ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceGeometries[ i ];\n\n\t\t\t\t// a single geometry instance in collada can lead to multiple object3Ds.\n\t\t\t\t// this is the case when primitives are combined like triangles and lines\n\n\t\t\t\tvar geometries = getGeometry( instance.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tobjects.push( newObjects[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance nodes\n\n\t\t\tfor ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( instanceNodes[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tvar object;\n\n\t\t\tif ( nodes.length === 0 && objects.length === 1 ) {\n\n\t\t\t\tobject = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tobject = ( type === 'JOINT' ) ? new Bone() : new Group();\n\n\t\t\t\tfor ( var i = 0; i < objects.length; i ++ ) {\n\n\t\t\t\t\tobject.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.name = ( type === 'JOINT' ) ? data.sid : data.name;\n\t\t\tobject.matrix.copy( matrix );\n\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tvar fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );\n\n\t\tfunction resolveMaterialBinding( keys, instanceMaterials ) {\n\n\t\t\tvar materials = [];\n\n\t\t\tfor ( var i = 0, l = keys.length; i < l; i ++ ) {\n\n\t\t\t\tvar id = instanceMaterials[ keys[ i ] ];\n\n\t\t\t\tif ( id === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );\n\t\t\t\t\tmaterials.push( fallbackMaterial );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials.push( getMaterial( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t}\n\n\t\tfunction buildObjects( geometries, instanceMaterials ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tfor ( var type in geometries ) {\n\n\t\t\t\tvar geometry = geometries[ type ];\n\n\t\t\t\tvar materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );\n\n\t\t\t\t// handle case if no materials are defined\n\n\t\t\t\tif ( materials.length === 0 ) {\n\n\t\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\t\tmaterials.push( new LineBasicMaterial() );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials.push( new MeshPhongMaterial() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// regard skinning\n\n\t\t\t\tvar skinning = ( geometry.data.attributes.skinIndex !== undefined );\n\n\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tmaterials[ i ].skinning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// choose between a single or multi materials (material array)\n\n\t\t\t\tvar material = ( materials.length === 1 ) ? materials[ 0 ] : materials;\n\n\t\t\t\t// now create a specific 3D object\n\n\t\t\t\tvar object;\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\t\tobject = new LineSegments( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tobject = new Line( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry.data, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry.data, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tobjects.push( object );\n\n\t\t\t}\n\n\t\t\treturn objects;\n\n\t\t}\n\n\t\tfunction hasNode( id ) {\n\n\t\t\treturn library.nodes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getNode( id ) {\n\n\t\t\treturn getBuild( library.nodes[ id ], buildNode );\n\n\t\t}\n\n\t\t// visual scenes\n\n\t\tfunction parseVisualScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tprepareNodes( xml );\n\n\t\t\tvar elements = getElementsByTagName( xml, 'node' );\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tdata.children.push( parseNode( elements[ i ] ) );\n\n\t\t\t}\n\n\t\t\tlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildVisualScene( data ) {\n\n\t\t\tvar group = new Group();\n\t\t\tgroup.name = data.name;\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar child = children[ i ];\n\n\t\t\t\tgroup.add( getNode( child.id ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction hasVisualScene( id ) {\n\n\t\t\treturn library.visualScenes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getVisualScene( id ) {\n\n\t\t\treturn getBuild( library.visualScenes[ id ], buildVisualScene );\n\n\t\t}\n\n\t\t// scenes\n\n\t\tfunction parseScene( xml ) {\n\n\t\t\tvar instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];\n\t\t\treturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );\n\n\t\t}\n\n\t\tfunction setupAnimations() {\n\n\t\t\tvar clips = library.clips;\n\n\t\t\tif ( isEmpty( clips ) === true ) {\n\n\t\t\t\tif ( isEmpty( library.animations ) === false ) {\n\n\t\t\t\t\t// if there are animations but no clips, we create a default clip for playback\n\n\t\t\t\t\tvar tracks = [];\n\n\t\t\t\t\tfor ( var id in library.animations ) {\n\n\t\t\t\t\t\tvar animationTracks = getAnimation( id );\n\n\t\t\t\t\t\tfor ( var i = 0, l = animationTracks.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\ttracks.push( animationTracks[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimations.push( new AnimationClip( 'default', - 1, tracks ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var id in clips ) {\n\n\t\t\t\t\tanimations.push( getAnimationClip( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// convert the parser error element into text with each child elements text\n\t\t// separated by new lines.\n\n\t\tfunction parserErrorToText( parserError ) {\n\n\t\t\tvar result = '';\n\t\t\tvar stack = [ parserError ];\n\n\t\t\twhile ( stack.length ) {\n\n\t\t\t\tvar node = stack.shift();\n\n\t\t\t\tif ( node.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t\t\tresult += node.textContent;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += '\\n';\n\t\t\t\t\tstack.push.apply( stack, node.childNodes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result.trim();\n\n\t\t}\n\n\t\tif ( text.length === 0 ) {\n\n\t\t\treturn { scene: new Scene() };\n\n\t\t}\n\n\t\tvar xml = new DOMParser().parseFromString( text, 'application/xml' );\n\n\t\tvar collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];\n\n\t\tvar parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];\n\t\tif ( parserError !== undefined ) {\n\n\t\t\t// Chrome will return parser error with a div in it\n\n\t\t\tvar errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];\n\t\t\tvar errorText;\n\n\t\t\tif ( errorElement ) {\n\n\t\t\t\terrorText = errorElement.textContent;\n\n\t\t\t} else {\n\n\t\t\t\terrorText = parserErrorToText( parserError );\n\n\t\t\t}\n\n\t\t\tconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\\n', errorText );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// metadata\n\n\t\tvar version = collada.getAttribute( 'version' );\n\t\tconsole.log( 'THREE.ColladaLoader: File version', version );\n\n\t\tvar asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );\n\t\tvar textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\tvar tgaLoader;\n\n\t\tif ( TGALoader ) {\n\n\t\t\ttgaLoader = new TGALoader( this.manager );\n\t\t\ttgaLoader.setPath( this.resourcePath || path );\n\n\t\t}\n\n\t\t//\n\n\t\tvar animations = [];\n\t\tvar kinematics = {};\n\t\tvar count = 0;\n\n\t\t//\n\n\t\tvar library = {\n\t\t\tanimations: {},\n\t\t\tclips: {},\n\t\t\tcontrollers: {},\n\t\t\timages: {},\n\t\t\teffects: {},\n\t\t\tmaterials: {},\n\t\t\tcameras: {},\n\t\t\tlights: {},\n\t\t\tgeometries: {},\n\t\t\tnodes: {},\n\t\t\tvisualScenes: {},\n\t\t\tkinematicsModels: {},\n\t\t\tphysicsModels: {},\n\t\t\tkinematicsScenes: {}\n\t\t};\n\n\t\tparseLibrary( collada, 'library_animations', 'animation', parseAnimation );\n\t\tparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );\n\t\tparseLibrary( collada, 'library_controllers', 'controller', parseController );\n\t\tparseLibrary( collada, 'library_images', 'image', parseImage );\n\t\tparseLibrary( collada, 'library_effects', 'effect', parseEffect );\n\t\tparseLibrary( collada, 'library_materials', 'material', parseMaterial );\n\t\tparseLibrary( collada, 'library_cameras', 'camera', parseCamera );\n\t\tparseLibrary( collada, 'library_lights', 'light', parseLight );\n\t\tparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );\n\t\tparseLibrary( collada, 'library_nodes', 'node', parseNode );\n\t\tparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );\n\t\tparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );\n\t\tparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );\n\t\tparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );\n\n\t\tbuildLibrary( library.animations, buildAnimation );\n\t\tbuildLibrary( library.clips, buildAnimationClip );\n\t\tbuildLibrary( library.controllers, buildController );\n\t\tbuildLibrary( library.images, buildImage );\n\t\tbuildLibrary( library.effects, buildEffect );\n\t\tbuildLibrary( library.materials, buildMaterial );\n\t\tbuildLibrary( library.cameras, buildCamera );\n\t\tbuildLibrary( library.lights, buildLight );\n\t\tbuildLibrary( library.geometries, buildGeometry );\n\t\tbuildLibrary( library.visualScenes, buildVisualScene );\n\n\t\tsetupAnimations();\n\t\tsetupKinematics();\n\n\t\tvar scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );\n\n\t\tif ( asset.upAxis === 'Z_UP' ) {\n\n\t\t\tscene.quaternion.setFromEuler( new Euler( - Math.PI / 2, 0, 0 ) );\n\n\t\t}\n\n\t\tscene.scale.multiplyScalar( asset.unit );\n\n\t\treturn {\n\t\t\tanimations: animations,\n\t\t\tkinematics: kinematics,\n\t\t\tlibrary: library,\n\t\t\tscene: scene\n\t\t};\n\n\t}\n\n} );\n\nexport { ColladaLoader };\n","import {\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tMaterial,\n\tMesh,\n\tMeshPhongMaterial,\n\tPoints,\n\tPointsMaterial,\n\tVector3\n} from \"../../../build/three.module.js\";\n\nvar OBJLoader = ( function () {\n\n\t// o object_name | g group_name\n\tvar object_pattern = /^[og]\\s*(.+)?/;\n\t// mtllib file_reference\n\tvar material_library_pattern = /^mtllib /;\n\t// usemtl material_name\n\tvar material_use_pattern = /^usemtl /;\n\t// usemap map_name\n\tvar map_use_pattern = /^usemap /;\n\n\tvar vA = new Vector3();\n\tvar vB = new Vector3();\n\tvar vC = new Vector3();\n\n\tvar ab = new Vector3();\n\tvar cb = new Vector3();\n\n\tfunction ParserState() {\n\n\t\tvar state = {\n\t\t\tobjects: [],\n\t\t\tobject: {},\n\n\t\t\tvertices: [],\n\t\t\tnormals: [],\n\t\t\tcolors: [],\n\t\t\tuvs: [],\n\n\t\t\tmaterials: {},\n\t\t\tmaterialLibraries: [],\n\n\t\t\tstartObject: function ( name, fromDeclaration ) {\n\n\t\t\t\t// If the current object (initial from reset) is not from a g/o declaration in the parsed\n\t\t\t\t// file. We need to use it for the first parsed g/o to keep things in sync.\n\t\t\t\tif ( this.object && this.object.fromDeclaration === false ) {\n\n\t\t\t\t\tthis.object.name = name;\n\t\t\t\t\tthis.object.fromDeclaration = ( fromDeclaration !== false );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tvar previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined );\n\n\t\t\t\tif ( this.object && typeof this.object._finalize === 'function' ) {\n\n\t\t\t\t\tthis.object._finalize( true );\n\n\t\t\t\t}\n\n\t\t\t\tthis.object = {\n\t\t\t\t\tname: name || '',\n\t\t\t\t\tfromDeclaration: ( fromDeclaration !== false ),\n\n\t\t\t\t\tgeometry: {\n\t\t\t\t\t\tvertices: [],\n\t\t\t\t\t\tnormals: [],\n\t\t\t\t\t\tcolors: [],\n\t\t\t\t\t\tuvs: [],\n\t\t\t\t\t\thasNormalIndices: false,\n\t\t\t\t\t\thasUVIndices: false\n\t\t\t\t\t},\n\t\t\t\t\tmaterials: [],\n\t\t\t\t\tsmooth: true,\n\n\t\t\t\t\tstartMaterial: function ( name, libraries ) {\n\n\t\t\t\t\t\tvar previous = this._finalize( false );\n\n\t\t\t\t\t\t// New usemtl declaration overwrites an inherited material, except if faces were declared\n\t\t\t\t\t\t// after the material, then it must be preserved for proper MultiMaterial continuation.\n\t\t\t\t\t\tif ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) {\n\n\t\t\t\t\t\t\tthis.materials.splice( previous.index, 1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar material = {\n\t\t\t\t\t\t\tindex: this.materials.length,\n\t\t\t\t\t\t\tname: name || '',\n\t\t\t\t\t\t\tmtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ),\n\t\t\t\t\t\t\tsmooth: ( previous !== undefined ? previous.smooth : this.smooth ),\n\t\t\t\t\t\t\tgroupStart: ( previous !== undefined ? previous.groupEnd : 0 ),\n\t\t\t\t\t\t\tgroupEnd: - 1,\n\t\t\t\t\t\t\tgroupCount: - 1,\n\t\t\t\t\t\t\tinherited: false,\n\n\t\t\t\t\t\t\tclone: function ( index ) {\n\n\t\t\t\t\t\t\t\tvar cloned = {\n\t\t\t\t\t\t\t\t\tindex: ( typeof index === 'number' ? index : this.index ),\n\t\t\t\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t\t\t\t\tmtllib: this.mtllib,\n\t\t\t\t\t\t\t\t\tsmooth: this.smooth,\n\t\t\t\t\t\t\t\t\tgroupStart: 0,\n\t\t\t\t\t\t\t\t\tgroupEnd: - 1,\n\t\t\t\t\t\t\t\t\tgroupCount: - 1,\n\t\t\t\t\t\t\t\t\tinherited: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tcloned.clone = this.clone.bind( cloned );\n\t\t\t\t\t\t\t\treturn cloned;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.materials.push( material );\n\n\t\t\t\t\t\treturn material;\n\n\t\t\t\t\t},\n\n\t\t\t\t\tcurrentMaterial: function () {\n\n\t\t\t\t\t\tif ( this.materials.length > 0 ) {\n\n\t\t\t\t\t\t\treturn this.materials[ this.materials.length - 1 ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn undefined;\n\n\t\t\t\t\t},\n\n\t\t\t\t\t_finalize: function ( end ) {\n\n\t\t\t\t\t\tvar lastMultiMaterial = this.currentMaterial();\n\t\t\t\t\t\tif ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) {\n\n\t\t\t\t\t\t\tlastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\n\t\t\t\t\t\t\tlastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\n\t\t\t\t\t\t\tlastMultiMaterial.inherited = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Ignore objects tail materials if no face declarations followed them before a new o/g started.\n\t\t\t\t\t\tif ( end && this.materials.length > 1 ) {\n\n\t\t\t\t\t\t\tfor ( var mi = this.materials.length - 1; mi >= 0; mi -- ) {\n\n\t\t\t\t\t\t\t\tif ( this.materials[ mi ].groupCount <= 0 ) {\n\n\t\t\t\t\t\t\t\t\tthis.materials.splice( mi, 1 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Guarantee at least one empty material, this makes the creation later more straight forward.\n\t\t\t\t\t\tif ( end && this.materials.length === 0 ) {\n\n\t\t\t\t\t\t\tthis.materials.push( {\n\t\t\t\t\t\t\t\tname: '',\n\t\t\t\t\t\t\t\tsmooth: this.smooth\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn lastMultiMaterial;\n\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Inherit previous objects material.\n\t\t\t\t// Spec tells us that a declared material must be set to all objects until a new material is declared.\n\t\t\t\t// If a usemtl declaration is encountered while this new object is being parsed, it will\n\t\t\t\t// overwrite the inherited material. Exception being that there was already face declarations\n\t\t\t\t// to the inherited material, then it will be preserved for proper MultiMaterial continuation.\n\n\t\t\t\tif ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) {\n\n\t\t\t\t\tvar declared = previousMaterial.clone( 0 );\n\t\t\t\t\tdeclared.inherited = true;\n\t\t\t\t\tthis.object.materials.push( declared );\n\n\t\t\t\t}\n\n\t\t\t\tthis.objects.push( this.object );\n\n\t\t\t},\n\n\t\t\tfinalize: function () {\n\n\t\t\t\tif ( this.object && typeof this.object._finalize === 'function' ) {\n\n\t\t\t\t\tthis.object._finalize( true );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tparseVertexIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 3 ) * 3;\n\n\t\t\t},\n\n\t\t\tparseNormalIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 3 ) * 3;\n\n\t\t\t},\n\n\t\t\tparseUVIndex: function ( value, len ) {\n\n\t\t\t\tvar index = parseInt( value, 10 );\n\t\t\t\treturn ( index >= 0 ? index - 1 : index + len / 2 ) * 2;\n\n\t\t\t},\n\n\t\t\taddVertex: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddVertexPoint: function ( a ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\n\t\t\t},\n\n\t\t\taddVertexLine: function ( a ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.vertices;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\n\t\t\t},\n\n\t\t\taddNormal: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.normals;\n\t\t\t\tvar dst = this.object.geometry.normals;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddFaceNormal: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.vertices;\n\t\t\t\tvar dst = this.object.geometry.normals;\n\n\t\t\t\tvA.fromArray( src, a );\n\t\t\t\tvB.fromArray( src, b );\n\t\t\t\tvC.fromArray( src, c );\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tcb.normalize();\n\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\t\t\t\tdst.push( cb.x, cb.y, cb.z );\n\n\t\t\t},\n\n\t\t\taddColor: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.colors;\n\t\t\t\tvar dst = this.object.geometry.colors;\n\n\t\t\t\tif ( src[ a ] !== undefined ) dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] );\n\t\t\t\tif ( src[ b ] !== undefined ) dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] );\n\t\t\t\tif ( src[ c ] !== undefined ) dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] );\n\n\t\t\t},\n\n\t\t\taddUV: function ( a, b, c ) {\n\n\t\t\t\tvar src = this.uvs;\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ] );\n\t\t\t\tdst.push( src[ b + 0 ], src[ b + 1 ] );\n\t\t\t\tdst.push( src[ c + 0 ], src[ c + 1 ] );\n\n\t\t\t},\n\n\t\t\taddDefaultUV: function () {\n\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( 0, 0 );\n\t\t\t\tdst.push( 0, 0 );\n\t\t\t\tdst.push( 0, 0 );\n\n\t\t\t},\n\n\t\t\taddUVLine: function ( a ) {\n\n\t\t\t\tvar src = this.uvs;\n\t\t\t\tvar dst = this.object.geometry.uvs;\n\n\t\t\t\tdst.push( src[ a + 0 ], src[ a + 1 ] );\n\n\t\t\t},\n\n\t\t\taddFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) {\n\n\t\t\t\tvar vLen = this.vertices.length;\n\n\t\t\t\tvar ia = this.parseVertexIndex( a, vLen );\n\t\t\t\tvar ib = this.parseVertexIndex( b, vLen );\n\t\t\t\tvar ic = this.parseVertexIndex( c, vLen );\n\n\t\t\t\tthis.addVertex( ia, ib, ic );\n\t\t\t\tthis.addColor( ia, ib, ic );\n\n\t\t\t\t// normals\n\n\t\t\t\tif ( na !== undefined && na !== '' ) {\n\n\t\t\t\t\tvar nLen = this.normals.length;\n\n\t\t\t\t\tia = this.parseNormalIndex( na, nLen );\n\t\t\t\t\tib = this.parseNormalIndex( nb, nLen );\n\t\t\t\t\tic = this.parseNormalIndex( nc, nLen );\n\n\t\t\t\t\tthis.addNormal( ia, ib, ic );\n\n\t\t\t\t\tthis.object.geometry.hasNormalIndices = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.addFaceNormal( ia, ib, ic );\n\n\t\t\t\t}\n\n\t\t\t\t// uvs\n\n\t\t\t\tif ( ua !== undefined && ua !== '' ) {\n\n\t\t\t\t\tvar uvLen = this.uvs.length;\n\n\t\t\t\t\tia = this.parseUVIndex( ua, uvLen );\n\t\t\t\t\tib = this.parseUVIndex( ub, uvLen );\n\t\t\t\t\tic = this.parseUVIndex( uc, uvLen );\n\n\t\t\t\t\tthis.addUV( ia, ib, ic );\n\n\t\t\t\t\tthis.object.geometry.hasUVIndices = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// add placeholder values (for inconsistent face definitions)\n\n\t\t\t\t\tthis.addDefaultUV();\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\taddPointGeometry: function ( vertices ) {\n\n\t\t\t\tthis.object.geometry.type = 'Points';\n\n\t\t\t\tvar vLen = this.vertices.length;\n\n\t\t\t\tfor ( var vi = 0, l = vertices.length; vi < l; vi ++ ) {\n\n\t\t\t\t\tthis.addVertexPoint( this.parseVertexIndex( vertices[ vi ], vLen ) );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\taddLineGeometry: function ( vertices, uvs ) {\n\n\t\t\t\tthis.object.geometry.type = 'Line';\n\n\t\t\t\tvar vLen = this.vertices.length;\n\t\t\t\tvar uvLen = this.uvs.length;\n\n\t\t\t\tfor ( var vi = 0, l = vertices.length; vi < l; vi ++ ) {\n\n\t\t\t\t\tthis.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) {\n\n\t\t\t\t\tthis.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tstate.startObject( '', false );\n\n\t\treturn state;\n\n\t}\n\n\t//\n\n\tfunction OBJLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.materials = null;\n\n\t}\n\n\tOBJLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: OBJLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\tif ( onError ) {\n\n\t\t\t\t\t\tonError( e );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetMaterials: function ( materials ) {\n\n\t\t\tthis.materials = materials;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( text ) {\n\n\t\t\tvar state = new ParserState();\n\n\t\t\tif ( text.indexOf( '\\r\\n' ) !== - 1 ) {\n\n\t\t\t\t// This is faster than String.split with regex that splits on both\n\t\t\t\ttext = text.replace( /\\r\\n/g, '\\n' );\n\n\t\t\t}\n\n\t\t\tif ( text.indexOf( '\\\\\\n' ) !== - 1 ) {\n\n\t\t\t\t// join lines separated by a line continuation character (\\)\n\t\t\t\ttext = text.replace( /\\\\\\n/g, '' );\n\n\t\t\t}\n\n\t\t\tvar lines = text.split( '\\n' );\n\t\t\tvar line = '', lineFirstChar = '';\n\t\t\tvar lineLength = 0;\n\t\t\tvar result = [];\n\n\t\t\t// Faster to just trim left side of the line. Use if available.\n\t\t\tvar trimLeft = ( typeof ''.trimLeft === 'function' );\n\n\t\t\tfor ( var i = 0, l = lines.length; i < l; i ++ ) {\n\n\t\t\t\tline = lines[ i ];\n\n\t\t\t\tline = trimLeft ? line.trimLeft() : line.trim();\n\n\t\t\t\tlineLength = line.length;\n\n\t\t\t\tif ( lineLength === 0 ) continue;\n\n\t\t\t\tlineFirstChar = line.charAt( 0 );\n\n\t\t\t\t// @todo invoke passed in handler if any\n\t\t\t\tif ( lineFirstChar === '#' ) continue;\n\n\t\t\t\tif ( lineFirstChar === 'v' ) {\n\n\t\t\t\t\tvar data = line.split( /\\s+/ );\n\n\t\t\t\t\tswitch ( data[ 0 ] ) {\n\n\t\t\t\t\t\tcase 'v':\n\t\t\t\t\t\t\tstate.vertices.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 3 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( data.length >= 7 ) {\n\n\t\t\t\t\t\t\t\tstate.colors.push(\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 4 ] ),\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 5 ] ),\n\t\t\t\t\t\t\t\t\tparseFloat( data[ 6 ] )\n\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// if no colors are defined, add placeholders so color and vertex indices match\n\n\t\t\t\t\t\t\t\tstate.colors.push( undefined, undefined, undefined );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vn':\n\t\t\t\t\t\t\tstate.normals.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 3 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vt':\n\t\t\t\t\t\t\tstate.uvs.push(\n\t\t\t\t\t\t\t\tparseFloat( data[ 1 ] ),\n\t\t\t\t\t\t\t\tparseFloat( data[ 2 ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( lineFirstChar === 'f' ) {\n\n\t\t\t\t\tvar lineData = line.substr( 1 ).trim();\n\t\t\t\t\tvar vertexData = lineData.split( /\\s+/ );\n\t\t\t\t\tvar faceVertices = [];\n\n\t\t\t\t\t// Parse the face vertex data into an easy to work with format\n\n\t\t\t\t\tfor ( var j = 0, jl = vertexData.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar vertex = vertexData[ j ];\n\n\t\t\t\t\t\tif ( vertex.length > 0 ) {\n\n\t\t\t\t\t\t\tvar vertexParts = vertex.split( '/' );\n\t\t\t\t\t\t\tfaceVertices.push( vertexParts );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Draw an edge between the first vertex and all subsequent vertices to form an n-gon\n\n\t\t\t\t\tvar v1 = faceVertices[ 0 ];\n\n\t\t\t\t\tfor ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar v2 = faceVertices[ j ];\n\t\t\t\t\t\tvar v3 = faceVertices[ j + 1 ];\n\n\t\t\t\t\t\tstate.addFace(\n\t\t\t\t\t\t\tv1[ 0 ], v2[ 0 ], v3[ 0 ],\n\t\t\t\t\t\t\tv1[ 1 ], v2[ 1 ], v3[ 1 ],\n\t\t\t\t\t\t\tv1[ 2 ], v2[ 2 ], v3[ 2 ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( lineFirstChar === 'l' ) {\n\n\t\t\t\t\tvar lineParts = line.substring( 1 ).trim().split( \" \" );\n\t\t\t\t\tvar lineVertices = [], lineUVs = [];\n\n\t\t\t\t\tif ( line.indexOf( \"/\" ) === - 1 ) {\n\n\t\t\t\t\t\tlineVertices = lineParts;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tfor ( var li = 0, llen = lineParts.length; li < llen; li ++ ) {\n\n\t\t\t\t\t\t\tvar parts = lineParts[ li ].split( \"/\" );\n\n\t\t\t\t\t\t\tif ( parts[ 0 ] !== \"\" ) lineVertices.push( parts[ 0 ] );\n\t\t\t\t\t\t\tif ( parts[ 1 ] !== \"\" ) lineUVs.push( parts[ 1 ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.addLineGeometry( lineVertices, lineUVs );\n\n\t\t\t\t} else if ( lineFirstChar === 'p' ) {\n\n\t\t\t\t\tvar lineData = line.substr( 1 ).trim();\n\t\t\t\t\tvar pointData = lineData.split( \" \" );\n\n\t\t\t\t\tstate.addPointGeometry( pointData );\n\n\t\t\t\t} else if ( ( result = object_pattern.exec( line ) ) !== null ) {\n\n\t\t\t\t\t// o object_name\n\t\t\t\t\t// or\n\t\t\t\t\t// g group_name\n\n\t\t\t\t\t// WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869\n\t\t\t\t\t// var name = result[ 0 ].substr( 1 ).trim();\n\t\t\t\t\tvar name = ( \" \" + result[ 0 ].substr( 1 ).trim() ).substr( 1 );\n\n\t\t\t\t\tstate.startObject( name );\n\n\t\t\t\t} else if ( material_use_pattern.test( line ) ) {\n\n\t\t\t\t\t// material\n\n\t\t\t\t\tstate.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries );\n\n\t\t\t\t} else if ( material_library_pattern.test( line ) ) {\n\n\t\t\t\t\t// mtl file\n\n\t\t\t\t\tstate.materialLibraries.push( line.substring( 7 ).trim() );\n\n\t\t\t\t} else if ( map_use_pattern.test( line ) ) {\n\n\t\t\t\t\t// the line is parsed but ignored since the loader assumes textures are defined MTL files\n\t\t\t\t\t// (according to https://www.okino.com/conv/imp_wave.htm, 'usemap' is the old-style Wavefront texture reference method)\n\n\t\t\t\t\tconsole.warn( 'THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Textures must be defined in MTL files.' );\n\n\t\t\t\t} else if ( lineFirstChar === 's' ) {\n\n\t\t\t\t\tresult = line.split( ' ' );\n\n\t\t\t\t\t// smooth shading\n\n\t\t\t\t\t// @todo Handle files that have varying smooth values for a set of faces inside one geometry,\n\t\t\t\t\t// but does not define a usemtl for each face set.\n\t\t\t\t\t// This should be detected and a dummy material created (later MultiMaterial and geometry groups).\n\t\t\t\t\t// This requires some care to not create extra material on each smooth value for \"normal\" obj files.\n\t\t\t\t\t// where explicit usemtl defines geometry groups.\n\t\t\t\t\t// Example asset: examples/models/obj/cerberus/Cerberus.obj\n\n\t\t\t\t\t/*\n\t\t\t\t\t * http://paulbourke.net/dataformats/obj/\n\t\t\t\t\t * or\n\t\t\t\t\t * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf\n\t\t\t\t\t *\n\t\t\t\t\t * From chapter \"Grouping\" Syntax explanation \"s group_number\":\n\t\t\t\t\t * \"group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off.\n\t\t\t\t\t * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form\n\t\t\t\t\t * surfaces, smoothing groups are either turned on or off; there is no difference between values greater\n\t\t\t\t\t * than 0.\"\n\t\t\t\t\t */\n\t\t\t\t\tif ( result.length > 1 ) {\n\n\t\t\t\t\t\tvar value = result[ 1 ].trim().toLowerCase();\n\t\t\t\t\t\tstate.object.smooth = ( value !== '0' && value !== 'off' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// ZBrush can produce \"s\" lines #11707\n\t\t\t\t\t\tstate.object.smooth = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar material = state.object.currentMaterial();\n\t\t\t\t\tif ( material ) material.smooth = state.object.smooth;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Handle null terminated files without exception\n\t\t\t\t\tif ( line === '\\0' ) continue;\n\n\t\t\t\t\tconsole.warn( 'THREE.OBJLoader: Unexpected line: \"' + line + '\"' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.finalize();\n\n\t\t\tvar container = new Group();\n\t\t\tcontainer.materialLibraries = [].concat( state.materialLibraries );\n\n\t\t\tfor ( var i = 0, l = state.objects.length; i < l; i ++ ) {\n\n\t\t\t\tvar object = state.objects[ i ];\n\t\t\t\tvar geometry = object.geometry;\n\t\t\t\tvar materials = object.materials;\n\t\t\t\tvar isLine = ( geometry.type === 'Line' );\n\t\t\t\tvar isPoints = ( geometry.type === 'Points' );\n\t\t\t\tvar hasVertexColors = false;\n\n\t\t\t\t// Skip o/g line declarations that did not follow with any faces\n\t\t\t\tif ( geometry.vertices.length === 0 ) continue;\n\n\t\t\t\tvar buffergeometry = new BufferGeometry();\n\n\t\t\t\tbuffergeometry.setAttribute( 'position', new Float32BufferAttribute( geometry.vertices, 3 ) );\n\n\t\t\t\tif ( geometry.hasNormalIndices === true ) {\n\n\t\t\t\t\tbuffergeometry.setAttribute( 'normal', new Float32BufferAttribute( geometry.normals, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\t\t\thasVertexColors = true;\n\t\t\t\t\tbuffergeometry.setAttribute( 'color', new Float32BufferAttribute( geometry.colors, 3 ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.hasUVIndices === true ) {\n\n\t\t\t\t\tbuffergeometry.setAttribute( 'uv', new Float32BufferAttribute( geometry.uvs, 2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Create materials\n\n\t\t\t\tvar createdMaterials = [];\n\n\t\t\t\tfor ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) {\n\n\t\t\t\t\tvar sourceMaterial = materials[ mi ];\n\t\t\t\t\tvar materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_' + hasVertexColors;\n\t\t\t\t\tvar material = state.materials[ materialHash ];\n\n\t\t\t\t\tif ( this.materials !== null ) {\n\n\t\t\t\t\t\tmaterial = this.materials.create( sourceMaterial.name );\n\n\t\t\t\t\t\t// mtl etc. loaders probably can't create line materials correctly, copy properties to a line material.\n\t\t\t\t\t\tif ( isLine && material && ! ( material instanceof LineBasicMaterial ) ) {\n\n\t\t\t\t\t\t\tvar materialLine = new LineBasicMaterial();\n\t\t\t\t\t\t\tMaterial.prototype.copy.call( materialLine, material );\n\t\t\t\t\t\t\tmaterialLine.color.copy( material.color );\n\t\t\t\t\t\t\tmaterial = materialLine;\n\n\t\t\t\t\t\t} else if ( isPoints && material && ! ( material instanceof PointsMaterial ) ) {\n\n\t\t\t\t\t\t\tvar materialPoints = new PointsMaterial( { size: 10, sizeAttenuation: false } );\n\t\t\t\t\t\t\tMaterial.prototype.copy.call( materialPoints, material );\n\t\t\t\t\t\t\tmaterialPoints.color.copy( material.color );\n\t\t\t\t\t\t\tmaterialPoints.map = material.map;\n\t\t\t\t\t\t\tmaterial = materialPoints;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material === undefined ) {\n\n\t\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\t\tmaterial = new LineBasicMaterial();\n\n\t\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\t\tmaterial = new PointsMaterial( { size: 1, sizeAttenuation: false } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterial.name = sourceMaterial.name;\n\t\t\t\t\t\tmaterial.flatShading = sourceMaterial.smooth ? false : true;\n\t\t\t\t\t\tmaterial.vertexColors = hasVertexColors;\n\n\t\t\t\t\t\tstate.materials[ materialHash ] = material;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcreatedMaterials.push( material );\n\n\t\t\t\t}\n\n\t\t\t\t// Create mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tif ( createdMaterials.length > 1 ) {\n\n\t\t\t\t\tfor ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) {\n\n\t\t\t\t\t\tvar sourceMaterial = materials[ mi ];\n\t\t\t\t\t\tbuffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\tmesh = new LineSegments( buffergeometry, createdMaterials );\n\n\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\tmesh = new Points( buffergeometry, createdMaterials );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmesh = new Mesh( buffergeometry, createdMaterials );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( isLine ) {\n\n\t\t\t\t\t\tmesh = new LineSegments( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t} else if ( isPoints ) {\n\n\t\t\t\t\t\tmesh = new Points( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmesh = new Mesh( buffergeometry, createdMaterials[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = object.name;\n\n\t\t\t\tcontainer.add( mesh );\n\n\t\t\t}\n\n\t\t\treturn container;\n\n\t\t}\n\n\t} );\n\n\treturn OBJLoader;\n\n} )();\n\nexport { OBJLoader };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min < max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.domElement.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\tscope.domElement.addEventListener( 'keydown', onKeyDown, false );\n\n\t// make sure element can receive keys.\n\n\tif ( scope.domElement.tabIndex === - 1 ) {\n\n\t\tscope.domElement.tabIndex = 0;\n\n\t}\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","import { Object3D, Quaternion } from 'three';\n\nclass URDFCollider extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFVisual extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFLink extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFJoint extends Object3D {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n this.jointValue = new Array(2).fill(0);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.urdfNode = null;\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = null;\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.jointType = source.jointType;\n this.axis = source.axis ? source.axis.clone() : null;\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n return this;\n\n }\n\n /* Public Functions */\n setJointValue(...values) {\n\n values = values.map(v => parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return false;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return false;\n if (angle === this.angle) return false;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n // FromAxisAngle seems to rotate the opposite of the\n // expected angle for URDF, so negate it here\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return false;\n if (pos === this.angle) return false;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n this.position.addScaledVector(this.axis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'floating':\n case 'planar':\n // TODO: Support these joint types\n console.warn(`'${ this.jointType }' joint not yet supported`);\n\n }\n\n return false;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.name in source.joints) {\n\n this.joints[c.name] = c;\n\n }\n\n if (c.isURDFLink && c.name in source.links) {\n\n this.links[c.name] = c;\n\n }\n\n if (c.isURDFCollider && c.name in source.colliders) {\n\n this.colliders[c.name] = c;\n\n }\n\n if (c.isURDFVisual && c.name in source.visual) {\n\n this.visual[c.name] = c;\n\n }\n\n });\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = didChange || this.setJointValue(name, ...value);\n\n } else {\n\n didChange = didChange || this.setJointValue(name, value);\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = {};\r\n\r\n }\r\n\r\n /* Public API */\r\n loadAsync(urdf) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.load(urdf, resolve, null, reject);\r\n\r\n });\r\n\r\n }\r\n\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n\r\n if (onProgress) {\r\n\r\n onProgress(null);\r\n\r\n }\r\n return res.text();\r\n\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error('URDFLoader: Error loading file.', e);\r\n\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import * as THREE from 'three';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\r\nimport URDFLoader from './URDFLoader.js';\r\n\r\nconst tempVec2 = new THREE.Vector2();\r\n\r\n// urdf-viewer element\r\n// Loads and displays a 3D view of a URDF-formatted robot\r\n\r\n// Events\r\n// urdf-change: Fires when the URDF has finished loading and getting processed\r\n// urdf-processed: Fires when the URDF has finished loading and getting processed\r\n// geometry-loaded: Fires when all the geometry has been fully loaded\r\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\r\n// angle-change: Fires when an angle changes\r\nexport default\r\nclass URDFViewer extends HTMLElement {\r\n\r\n static get observedAttributes() {\r\n\r\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits'];\r\n\r\n }\r\n\r\n get package() { return this.getAttribute('package') || ''; }\r\n set package(val) { this.setAttribute('package', val); }\r\n\r\n get urdf() { return this.getAttribute('urdf') || ''; }\r\n set urdf(val) { this.setAttribute('urdf', val); }\r\n\r\n get ignoreLimits() { return this.hasAttribute('ignore-limits') || false; }\r\n set ignoreLimits(val) { val ? this.setAttribute('ignore-limits', val) : this.removeAttribute('ignore-limits'); }\r\n\r\n get up() { return this.getAttribute('up') || '+Z'; }\r\n set up(val) { this.setAttribute('up', val); }\r\n\r\n get displayShadow() { return this.hasAttribute('display-shadow') || false; }\r\n set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }\r\n\r\n get ambientColor() { return this.getAttribute('ambient-color') || '#455A64'; }\r\n set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }\r\n\r\n get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }\r\n set autoRedraw(val) { val ? this.setAttribute('auto-redraw', true) : this.removeAttribute('auto-redraw'); }\r\n\r\n get noAutoRecenter() { return this.hasAttribute('no-auto-recenter') || false; }\r\n set noAutoRecenter(val) { val ? this.setAttribute('no-auto-recenter', true) : this.removeAttribute('no-auto-recenter'); }\r\n\r\n get jointValues() {\r\n\r\n const values = {};\r\n if (this.robot) {\r\n\r\n for (const name in this.robot.joints) {\r\n\r\n const joint = this.robot.joints[name];\r\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue];\r\n\r\n }\r\n\r\n }\r\n\r\n return values;\r\n\r\n }\r\n set jointValues(val) { this.setJointValues(val); }\r\n\r\n get angles() {\r\n\r\n return this.jointValues;\r\n\r\n }\r\n set angles(v) {\r\n\r\n this.jointValues = v;\r\n\r\n }\r\n\r\n /* Lifecycle Functions */\r\n constructor() {\r\n\r\n super();\r\n\r\n this._requestId = 0;\r\n this._dirty = false;\r\n this._loadScheduled = false;\r\n this.robot = null;\r\n this.loadMeshFunc = null;\r\n this.urlModifierFunc = null;\r\n\r\n // Scene setup\r\n const scene = new THREE.Scene();\r\n\r\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000');\r\n ambientLight.groundColor.lerp(ambientLight.color, 0.5);\r\n ambientLight.intensity = 0.5;\r\n ambientLight.position.set(0, 1, 0);\r\n scene.add(ambientLight);\r\n\r\n // Light setup\r\n const dirLight = new THREE.DirectionalLight(0xffffff);\r\n dirLight.position.set(4, 10, 1);\r\n dirLight.shadow.mapSize.width = 2048;\r\n dirLight.shadow.mapSize.height = 2048;\r\n dirLight.castShadow = true;\r\n scene.add(dirLight);\r\n scene.add(dirLight.target);\r\n\r\n // Renderer setup\r\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n renderer.setClearColor(0xffffff);\r\n renderer.setClearAlpha(0);\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\r\n renderer.outputEncoding = THREE.sRGBEncoding;\r\n\r\n // Camera setup\r\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);\r\n camera.position.z = -10;\r\n\r\n // World setup\r\n const world = new THREE.Object3D();\r\n scene.add(world);\r\n\r\n const plane = new THREE.Mesh(\r\n new THREE.PlaneBufferGeometry(40, 40),\r\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 }),\r\n );\r\n plane.rotation.x = -Math.PI / 2;\r\n plane.position.y = -0.5;\r\n plane.receiveShadow = true;\r\n plane.scale.set(10, 10, 10);\r\n scene.add(plane);\r\n\r\n // Controls setup\r\n const controls = new OrbitControls(camera, renderer.domElement);\r\n controls.rotateSpeed = 2.0;\r\n controls.zoomSpeed = 5;\r\n controls.panSpeed = 2;\r\n controls.enableZoom = true;\r\n controls.enableDamping = false;\r\n controls.maxDistance = 50;\r\n controls.minDistance = 0.25;\r\n controls.addEventListener('change', () => this.recenter());\r\n\r\n this.scene = scene;\r\n this.world = world;\r\n this.renderer = renderer;\r\n this.camera = camera;\r\n this.controls = controls;\r\n this.plane = plane;\r\n this.directionalLight = dirLight;\r\n this.ambientLight = ambientLight;\r\n\r\n this._setUp(this.up);\r\n\r\n const _renderLoop = () => {\r\n\r\n if (this.parentNode) {\r\n\r\n this.updateSize();\r\n\r\n if (this._dirty || this.autoRedraw) {\r\n\r\n if (!this.noAutoRecenter) {\r\n\r\n this._updateEnvironment();\r\n }\r\n\r\n this.renderer.render(scene, camera);\r\n this._dirty = false;\r\n\r\n }\r\n\r\n // update controls after the environment in\r\n // case the controls are retargeted\r\n this.controls.update();\r\n\r\n }\r\n this._renderLoopId = requestAnimationFrame(_renderLoop);\r\n\r\n };\r\n _renderLoop();\r\n\r\n }\r\n\r\n connectedCallback() {\r\n\r\n // Add our initialize styles for the element if they haven't\r\n // been added yet\r\n if (!this.constructor._styletag) {\r\n\r\n const styletag = document.createElement('style');\r\n styletag.innerHTML =\r\n `\r\n ${ this.tagName } { display: block; }\r\n ${ this.tagName } canvas {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `;\r\n document.head.appendChild(styletag);\r\n this.constructor._styletag = styletag;\r\n\r\n }\r\n\r\n // add the renderer\r\n if (this.childElementCount === 0) {\r\n\r\n this.appendChild(this.renderer.domElement);\r\n\r\n }\r\n\r\n this.updateSize();\r\n requestAnimationFrame(() => this.updateSize());\r\n\r\n }\r\n\r\n disconnectedCallback() {\r\n\r\n cancelAnimationFrame(this._renderLoopId);\r\n\r\n }\r\n\r\n attributeChangedCallback(attr, oldval, newval) {\r\n\r\n this.recenter();\r\n\r\n switch (attr) {\r\n\r\n case 'package':\r\n case 'urdf': {\r\n\r\n this._scheduleLoad();\r\n break;\r\n\r\n }\r\n\r\n case 'up': {\r\n\r\n this._setUp(this.up);\r\n break;\r\n\r\n }\r\n\r\n case 'ambient-color': {\r\n\r\n this.ambientLight.color.set(this.ambientColor);\r\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5);\r\n break;\r\n\r\n }\r\n\r\n case 'ignore-limits': {\r\n\r\n this._setIgnoreLimits(this.ignoreLimits, true);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n /* Public API */\r\n updateSize() {\r\n\r\n const r = this.renderer;\r\n const w = this.clientWidth;\r\n const h = this.clientHeight;\r\n const currsize = r.getSize(tempVec2);\r\n\r\n if (currsize.width !== w || currsize.height !== h) {\r\n\r\n this.recenter();\r\n\r\n }\r\n\r\n r.setPixelRatio(window.devicePixelRatio);\r\n r.setSize(w, h, false);\r\n\r\n this.camera.aspect = w / h;\r\n this.camera.updateProjectionMatrix();\r\n\r\n }\r\n\r\n redraw() {\r\n\r\n this._dirty = true;\r\n }\r\n\r\n recenter() {\r\n\r\n this._updateEnvironment();\r\n this.redraw();\r\n\r\n }\r\n\r\n // Set the joint with jointName to\r\n // angle in degrees\r\n setJointValue(jointName, ...values) {\r\n\r\n if (!this.robot) return;\r\n if (!this.robot.joints[jointName]) return;\r\n\r\n if (this.robot.joints[jointName].setJointValue(...values)) {\r\n\r\n this.redraw();\r\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }));\r\n\r\n }\r\n\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n for (const name in values) this.setJointValue(name, values[name]);\r\n\r\n }\r\n\r\n /* Private Functions */\r\n // Updates the position of the plane to be at the\r\n // lowest point below the robot and focuses the\r\n // camera on the center of the scene\r\n _updateEnvironment() {\r\n\r\n if (!this.robot) return;\r\n\r\n this.world.updateMatrixWorld();\r\n\r\n const bbox = new THREE.Box3();\r\n bbox.setFromObject(this.robot);\r\n\r\n const center = bbox.getCenter(new THREE.Vector3());\r\n this.controls.target.y = center.y;\r\n this.plane.position.y = bbox.min.y - 1e-3;\r\n\r\n const dirLight = this.directionalLight;\r\n dirLight.castShadow = this.displayShadow;\r\n\r\n if (this.displayShadow) {\r\n\r\n // Update the shadow camera rendering bounds to encapsulate the\r\n // model. We use the bounding sphere of the bounding box for\r\n // simplicity -- this could be a tighter fit.\r\n const sphere = bbox.getBoundingSphere(new THREE.Sphere());\r\n const minmax = sphere.radius;\r\n const cam = dirLight.shadow.camera;\r\n cam.left = cam.bottom = -minmax;\r\n cam.right = cam.top = minmax;\r\n\r\n // Update the camera to focus on the center of the model so the\r\n // shadow can encapsulate it\r\n const offset = dirLight.position.clone().sub(dirLight.target.position);\r\n dirLight.target.position.copy(center);\r\n dirLight.position.copy(center).add(offset);\r\n\r\n cam.updateProjectionMatrix();\r\n\r\n }\r\n\r\n }\r\n\r\n _scheduleLoad() {\r\n\r\n // if our current model is already what's being requested\r\n // or has been loaded then early out\r\n if (this._prevload === `${ this.package }|${ this.urdf }`) return;\r\n this._prevload = `${ this.package }|${ this.urdf }`;\r\n\r\n // if we're already waiting on a load then early out\r\n if (this._loadScheduled) return;\r\n this._loadScheduled = true;\r\n\r\n if (this.robot) {\r\n\r\n this.robot.traverse(c => c.dispose && c.dispose());\r\n this.robot.parent.remove(this.robot);\r\n this.robot = null;\r\n\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n\r\n this._loadUrdf(this.package, this.urdf);\r\n this._loadScheduled = false;\r\n\r\n });\r\n\r\n }\r\n\r\n // Watch the package and urdf field and load the robot model.\r\n // This should _only_ be called from _scheduleLoad because that\r\n // ensures the that current robot has been removed\r\n _loadUrdf(pkg, urdf) {\r\n\r\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n if (urdf) {\r\n\r\n // Keep track of this request and make\r\n // sure it doesn't get overwritten by\r\n // a subsequent one\r\n this._requestId++;\r\n const requestId = this._requestId;\r\n\r\n const updateMaterials = mesh => {\r\n\r\n mesh.traverse(c => {\r\n\r\n if (c.isMesh) {\r\n\r\n c.castShadow = true;\r\n c.receiveShadow = true;\r\n\r\n if (c.material) {\r\n\r\n const mats =\r\n (Array.isArray(c.material) ? c.material : [c.material])\r\n .map(m => {\r\n\r\n if (m instanceof THREE.MeshBasicMaterial) {\r\n\r\n m = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n if (m.map) {\r\n\r\n m.map.encoding = THREE.GammaEncoding;\r\n\r\n }\r\n\r\n return m;\r\n\r\n });\r\n c.material = mats.length === 1 ? mats[0] : mats;\r\n\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n if (pkg.includes(':') && (pkg.split(':')[1].substring(0, 2)) !== '//') {\r\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\r\n\r\n // Convert pkg(s) into a map. E.g.\r\n // { \"pkg_name\": \"path/to/pkg_name\",\r\n // \"pk2\": \"path2/to/pk2\" }\r\n\r\n pkg = pkg.split(',').reduce((map, value) => {\r\n\r\n const split = value.split(/:/).filter(x => !!x);\r\n const pkgName = split.shift().trim();\r\n const pkgPath = split.join(':').trim();\r\n map[pkgName] = pkgPath;\r\n\r\n return map;\r\n\r\n }, {});\r\n }\r\n\r\n let robot = null;\r\n const manager = new THREE.LoadingManager();\r\n manager.onLoad = () => {\r\n\r\n // If another request has come in to load a new\r\n // robot, then ignore this one\r\n if (this._requestId !== requestId) {\r\n\r\n robot.traverse(c => c.dispose && c.dispose());\r\n return;\r\n\r\n }\r\n\r\n this.robot = robot;\r\n this.world.add(robot);\r\n updateMaterials(robot);\r\n\r\n this._setIgnoreLimits(this.ignoreLimits);\r\n\r\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }));\r\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n this.recenter();\r\n\r\n };\r\n\r\n if (this.urlModifierFunc) {\r\n\r\n manager.setURLModifier(this.urlModifierFunc);\r\n\r\n }\r\n\r\n const loader = new URDFLoader(manager);\r\n loader.packages = pkg;\r\n loader.loadMeshCb = this.loadMeshFunc;\r\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' };\r\n loader.load(urdf, model => robot = model);\r\n\r\n }\r\n\r\n }\r\n\r\n // Watch the coordinate frame and update the\r\n // rotation of the scene to match\r\n _setUp(up) {\r\n\r\n if (!up) up = '+Z';\r\n up = up.toUpperCase();\r\n const sign = up.replace(/[^-+]/g, '')[0] || '+';\r\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z';\r\n\r\n const PI = Math.PI;\r\n const HALFPI = PI / 2;\r\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI);\r\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0);\r\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0);\r\n\r\n }\r\n\r\n // Updates the current robot's angles to ignore\r\n // joint limits or not\r\n _setIgnoreLimits(ignore, dispatch = false) {\r\n\r\n if (this.robot) {\r\n\r\n Object\r\n .values(this.robot.joints)\r\n .forEach(joint => {\r\n\r\n joint.ignoreLimits = ignore;\r\n joint.setJointValue(...joint.jointValues);\r\n\r\n });\r\n\r\n }\r\n\r\n if (dispatch) {\r\n\r\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }));\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import * as THREE from 'three';\r\nimport URDFViewer from './urdf-viewer-element.js';\r\n\r\n// urdf-manipulator element\r\n// Displays a URDF model that can be manipulated with the mouse\r\n\r\n// Events\r\n// joint-mouseover: Fired when a joint is hovered over\r\n// joint-mouseout: Fired when a joint is no longer hovered over\r\n// manipulate-start: Fires when a joint is manipulated\r\n// manipulate-end: Fires when a joint is done being manipulated\r\nexport default\r\nclass URDFManipulator extends URDFViewer {\r\n\r\n static get observedAttributes() {\r\n\r\n return ['highlight-color', ...super.observedAttributes];\r\n\r\n }\r\n\r\n get disableDragging() { return this.hasAttribute('disable-dragging'); }\r\n set disableDragging(val) { val ? this.setAttribute('disable-dragging', !!val) : this.removeAttribute('disable-dragging'); }\r\n\r\n get highlightColor() { return this.getAttribute('highlight-color') || '#FFFFFF'; }\r\n set highlightColor(val) { val ? this.setAttribute('highlight-color', val) : this.removeAttribute('highlight-color'); }\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n\r\n // The highlight material\r\n this.highlightMaterial =\r\n new THREE.MeshPhongMaterial({\r\n shininess: 10,\r\n color: this.highlightColor,\r\n emissive: this.highlightColor,\r\n emissiveIntensity: 0.25,\r\n });\r\n\r\n const el = this.renderer.domElement;\r\n\r\n // Saved mouse data between frames and initial\r\n // click point in space\r\n const mouse = new THREE.Vector2();\r\n const lastMouse = new THREE.Vector2();\r\n const clickPoint = new THREE.Vector3();\r\n\r\n // Reuseable variables\r\n const raycaster = new THREE.Raycaster();\r\n const delta = new THREE.Vector2();\r\n const plane = new THREE.Plane();\r\n const line = new THREE.Line3();\r\n\r\n // The joint being manipulated\r\n let dragging = null;\r\n\r\n const toMouseCoord = (e, v) => {\r\n\r\n v.x = ((e.pageX - el.offsetLeft) / el.offsetWidth) * 2 - 1;\r\n v.y = -((e.pageY - el.offsetTop) / el.offsetHeight) * 2 + 1;\r\n\r\n };\r\n\r\n // Get which part of the robot is hit by the mouse click\r\n const getCollisions = m => {\r\n\r\n if (!this.robot) return [];\r\n\r\n raycaster.setFromCamera(m, this.camera);\r\n\r\n const meshes = [];\r\n this.robot.traverse(c => c.type === 'Mesh' && meshes.push(c));\r\n\r\n return raycaster.intersectObjects(meshes);\r\n\r\n };\r\n\r\n const isJoint = j => {\r\n\r\n return j.isURDFJoint && j.jointType !== 'fixed';\r\n\r\n };\r\n\r\n // Find the nearest parent that is a joint\r\n const findNearestJoint = m => {\r\n\r\n let curr = m;\r\n while (curr) {\r\n\r\n if (isJoint(curr)) {\r\n\r\n break;\r\n\r\n }\r\n\r\n curr = curr.parent;\r\n\r\n }\r\n\r\n return curr;\r\n\r\n };\r\n\r\n // Highlight the link geometry under a joint\r\n const highlightLinkGeometry = (m, revert) => {\r\n\r\n const traverse = c => {\r\n\r\n // Set or revert the highlight color\r\n if (c.type === 'Mesh') {\r\n\r\n if (revert) {\r\n\r\n c.material = c.__origMaterial;\r\n delete c.__origMaterial;\r\n\r\n } else {\r\n\r\n c.__origMaterial = c.material;\r\n c.material = this.highlightMaterial;\r\n\r\n }\r\n\r\n }\r\n\r\n // Look into the children and stop if the next child is\r\n // another joint\r\n if (c === m || !isJoint(c)) {\r\n\r\n for (let i = 0; i < c.children.length; i++) {\r\n\r\n traverse(c.children[i]);\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n traverse(m);\r\n\r\n };\r\n\r\n const temp = new THREE.Vector3();\r\n const intersect1 = new THREE.Vector3();\r\n const intersect2 = new THREE.Vector3();\r\n\r\n // Get the changed angle between mouse position 1 and 2\r\n // when manipulating target\r\n const getAngle = (tg, m1, m2) => {\r\n\r\n // TODO: Why is the constant negated?\r\n plane.normal.copy(tg.axis).transformDirection(tg.matrixWorld).normalize();\r\n plane.constant = -plane.normal.dot(clickPoint);\r\n\r\n // If the camera is looking at the rotation axis at a skewed angle\r\n temp.copy(this.camera.position).sub(clickPoint).normalize();\r\n if (Math.abs(temp.dot(plane.normal)) < 0.2) {\r\n\r\n // distance to the clicked point\r\n const dist = temp.copy(clickPoint).sub(this.camera.position).length() * 0.9;\r\n\r\n // Get the point closest to the original clicked point\r\n // and use that as center of the rotation axis\r\n temp.set(0, 0, 0).applyMatrix4(tg.matrixWorld);\r\n temp.addScaledVector(plane.normal, -plane.distanceToPoint(temp));\r\n\r\n // Project out from the camera\r\n raycaster.setFromCamera(m1, this.camera);\r\n intersect1.copy(raycaster.ray.origin).add(\r\n raycaster.ray.direction.normalize().multiplyScalar(dist),\r\n );\r\n intersect1.sub(temp);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n intersect2.copy(raycaster.ray.origin).add(\r\n raycaster.ray.direction.normalize().multiplyScalar(dist),\r\n );\r\n intersect2.sub(temp);\r\n\r\n temp.crossVectors(intersect2, intersect1).normalize();\r\n\r\n // Multiply by a magic number to make it feel good\r\n return temp.dot(plane.normal) * intersect2.angleTo(intersect1) * 2;\r\n\r\n } else {\r\n\r\n // Get the point closest to the original clicked point\r\n // and use that as center of the rotation axis\r\n temp.set(0, 0, 0).applyMatrix4(tg.matrixWorld);\r\n temp.addScaledVector(plane.normal, -plane.distanceToPoint(temp));\r\n\r\n // project onto the plane of rotation\r\n raycaster.setFromCamera(m1, this.camera);\r\n line.start.copy(raycaster.ray.origin);\r\n line.end.copy(raycaster.ray.origin).add(raycaster.ray.direction.normalize().multiplyScalar(1e5));\r\n plane.intersectLine(line, intersect1);\r\n intersect1.sub(temp);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n line.start.copy(raycaster.ray.origin);\r\n line.end.copy(raycaster.ray.origin).add(raycaster.ray.direction.normalize().multiplyScalar(1e5));\r\n plane.intersectLine(line, intersect2);\r\n intersect2.sub(temp);\r\n\r\n temp.crossVectors(intersect2, intersect1);\r\n\r\n return Math.sign(temp.dot(plane.normal)) * intersect2.angleTo(intersect1);\r\n\r\n }\r\n\r\n };\r\n\r\n // Get the amount to move the prismatic joint based on the mouse move\r\n const getMove = (tg, m1, m2) => {\r\n\r\n const dist = temp.copy(clickPoint).sub(this.camera.position).length();\r\n\r\n raycaster.setFromCamera(m1, this.camera);\r\n raycaster.ray.direction.normalize().multiplyScalar(dist);\r\n intersect1.copy(raycaster.ray.origin).add(raycaster.ray.direction);\r\n\r\n raycaster.setFromCamera(m2, this.camera);\r\n raycaster.ray.direction.normalize().multiplyScalar(dist);\r\n intersect2.copy(raycaster.ray.origin).add(raycaster.ray.direction);\r\n\r\n temp.copy(intersect2).sub(intersect1);\r\n\r\n plane.normal.copy(tg.axis).transformDirection(tg.parent.matrixWorld).normalize();\r\n\r\n return temp.length() * -Math.sign(temp.dot(plane.normal));\r\n\r\n };\r\n\r\n el.addEventListener('mousedown', e => {\r\n\r\n if (this.disableDragging) return;\r\n\r\n toMouseCoord(e, mouse);\r\n lastMouse.copy(mouse);\r\n\r\n // get the information on the clicked item\r\n // and set the dragged joint\r\n const target = getCollisions(mouse).shift();\r\n if (target) {\r\n\r\n dragging = findNearestJoint(target.object);\r\n\r\n if (dragging) {\r\n\r\n clickPoint.copy(target.point);\r\n this.dispatchEvent(new CustomEvent('manipulate-start', { bubbles: true, cancelable: true, detail: dragging.name }));\r\n this.controls.enabled = false;\r\n\r\n }\r\n\r\n }\r\n\r\n }, true);\r\n\r\n let hovered = null;\r\n this._mouseMoveFunc = e => {\r\n\r\n toMouseCoord(e, mouse);\r\n delta.copy(mouse).sub(lastMouse);\r\n\r\n // Keep track of the hovered item. If an item is being\r\n // dragged, then it is considered hovered\r\n const wasHovered = hovered;\r\n if (hovered) {\r\n\r\n hovered = null;\r\n }\r\n\r\n if (dragging == null && this.disableDragging === false) {\r\n\r\n const collision = getCollisions(mouse).shift() || null;\r\n const joint = collision && findNearestJoint(collision.object);\r\n if (joint) {\r\n\r\n hovered = joint;\r\n\r\n }\r\n\r\n } else if (dragging) {\r\n\r\n hovered = dragging;\r\n\r\n }\r\n\r\n // Highlight the meshes and broadcast events if the hovered item changed\r\n if (hovered !== wasHovered) {\r\n\r\n if (wasHovered) {\r\n\r\n highlightLinkGeometry(wasHovered, true);\r\n this.dispatchEvent(new CustomEvent('joint-mouseout', { bubbles: true, cancelable: true, detail: wasHovered.name }));\r\n\r\n }\r\n\r\n if (hovered) {\r\n\r\n highlightLinkGeometry(hovered, false);\r\n this.dispatchEvent(new CustomEvent('joint-mouseover', { bubbles: true, cancelable: true, detail: hovered.name }));\r\n\r\n }\r\n\r\n this.redraw();\r\n\r\n }\r\n\r\n // Apply the manipulation\r\n if (dragging !== null) {\r\n\r\n let delta = null;\r\n if (dragging.jointType === 'revolute' || dragging.jointType === 'continuous') {\r\n\r\n delta = getAngle(dragging, mouse, lastMouse);\r\n\r\n } else if (dragging.jointType === 'prismatic') {\r\n\r\n delta = getMove(dragging, mouse, lastMouse);\r\n\r\n } else {\r\n\r\n // Not supported\r\n\r\n }\r\n\r\n if (delta) {\r\n\r\n this.setJointValue(dragging.name, dragging.angle + delta);\r\n\r\n }\r\n\r\n }\r\n\r\n lastMouse.copy(mouse);\r\n\r\n };\r\n\r\n // Clean up\r\n this._mouseUpFunc = e => {\r\n\r\n if (dragging) {\r\n\r\n this.dispatchEvent(new CustomEvent('manipulate-end', { bubbles: true, cancelable: true, detail: dragging.name }));\r\n dragging = null;\r\n this.controls.enabled = true;\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n connectedCallback() {\r\n\r\n super.connectedCallback();\r\n window.addEventListener('mousemove', this._mouseMoveFunc, true);\r\n window.addEventListener('mouseup', this._mouseUpFunc, true);\r\n\r\n }\r\n\r\n disconnectedCallback() {\r\n\r\n super.disconnectedCallback();\r\n window.removeEventListener('mousemove', this._mouseMoveFunc, true);\r\n window.removeEventListener('mouseup', this._mouseUpFunc, true);\r\n\r\n }\r\n\r\n attributeChangedCallback(attr, oldval, newval) {\r\n\r\n super.attributeChangedCallback(attr, oldval, newval);\r\n\r\n switch (attr) {\r\n\r\n case 'highlight-color':\r\n this.highlightMaterial.color.set(this.highlightColor);\r\n this.highlightMaterial.emissive.set(this.highlightColor);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","/* globals */\r\nimport * as THREE from 'three';\r\nimport { registerDragEvents } from './dragAndDrop.js';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';\r\nimport URDFManipulator from '../../src/urdf-manipulator-element.js';\r\n\r\ncustomElements.define('urdf-viewer', URDFManipulator);\r\n\r\n// declare these globally for the sake of the example.\r\n// Hack to make the build work with webpack for now.\r\n// TODO: Remove this once modules or parcel is being used\r\nconst viewer = document.querySelector('urdf-viewer');\r\n\r\nconst limitsToggle = document.getElementById('ignore-joint-limits');\r\nconst upSelect = document.getElementById('up-select');\r\nconst sliderList = document.querySelector('#controls ul');\r\nconst controlsel = document.getElementById('controls');\r\nconst controlsToggle = document.getElementById('toggle-controls');\r\nconst animToggle = document.getElementById('do-animate');\r\nconst DEG2RAD = Math.PI / 180;\r\nconst RAD2DEG = 1 / DEG2RAD;\r\nlet sliders = {};\r\n\r\n// Global Functions\r\nconst setColor = color => {\r\n\r\n document.body.style.backgroundColor = color;\r\n viewer.highlightColor = '#' + (new THREE.Color(0xffffff)).lerp(new THREE.Color(color), 0.35).getHexString();\r\n\r\n};\r\n\r\n// Events\r\n// toggle checkbox\r\nlimitsToggle.addEventListener('click', () => {\r\n limitsToggle.classList.toggle('checked');\r\n viewer.ignoreLimits = limitsToggle.classList.contains('checked');\r\n});\r\n\r\nupSelect.addEventListener('change', () => viewer.up = upSelect.value);\r\n\r\ncontrolsToggle.addEventListener('click', () => controlsel.classList.toggle('hidden'));\r\n\r\n// watch for urdf changes\r\nviewer.addEventListener('urdf-change', () => {\r\n\r\n Object\r\n .values(sliders)\r\n .forEach(sl => sl.remove());\r\n sliders = {};\r\n\r\n});\r\n\r\nviewer.addEventListener('ignore-limits-change', () => {\r\n\r\n Object\r\n .values(sliders)\r\n .forEach(sl => sl.update());\r\n\r\n});\r\n\r\nviewer.addEventListener('angle-change', e => {\r\n\r\n if (sliders[e.detail]) sliders[e.detail].update();\r\n\r\n});\r\n\r\nviewer.addEventListener('joint-mouseover', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) j.setAttribute('robot-hovered', true);\r\n\r\n});\r\n\r\nviewer.addEventListener('joint-mouseout', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) j.removeAttribute('robot-hovered');\r\n\r\n});\r\n\r\nlet originalNoAutoRecenter;\r\nviewer.addEventListener('manipulate-start', e => {\r\n\r\n const j = document.querySelector(`li[joint-name=\"${ e.detail }\"]`);\r\n if (j) {\r\n j.scrollIntoView({ block: 'nearest' });\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n originalNoAutoRecenter = viewer.noAutoRecenter;\r\n viewer.noAutoRecenter = true;\r\n\r\n});\r\n\r\nviewer.addEventListener('manipulate-end', e => {\r\n\r\n viewer.noAutoRecenter = originalNoAutoRecenter;\r\n\r\n});\r\n\r\n// create the sliders\r\nviewer.addEventListener('urdf-processed', () => {\r\n\r\n const r = viewer.robot;\r\n Object\r\n .keys(r.joints)\r\n .sort((a, b) => {\r\n\r\n const da = a.split(/[^\\d]+/g).filter(v => !!v).pop();\r\n const db = b.split(/[^\\d]+/g).filter(v => !!v).pop();\r\n\r\n if (da !== undefined && db !== undefined) {\r\n const delta = parseFloat(da) - parseFloat(db);\r\n if (delta !== 0) return delta;\r\n }\r\n\r\n if (a > b) return 1;\r\n if (b > a) return -1;\r\n return 0;\r\n\r\n })\r\n .map(key => r.joints[key])\r\n .forEach(joint => {\r\n\r\n const li = document.createElement('li');\r\n li.innerHTML =\r\n `\r\n ${ joint.name }\r\n \r\n \r\n `;\r\n li.setAttribute('joint-type', joint.jointType);\r\n li.setAttribute('joint-name', joint.name);\r\n\r\n sliderList.appendChild(li);\r\n\r\n // update the joint display\r\n const slider = li.querySelector('input[type=\"range\"]');\r\n const input = li.querySelector('input[type=\"number\"]');\r\n li.update = () => {\r\n let degVal = joint.angle;\r\n\r\n if (joint.jointType === 'revolute' || joint.jointType === 'continuous') {\r\n degVal *= RAD2DEG;\r\n }\r\n\r\n if (Math.abs(degVal) > 1) {\r\n degVal = degVal.toFixed(1);\r\n } else {\r\n degVal = degVal.toPrecision(2);\r\n }\r\n\r\n input.value = parseFloat(degVal);\r\n\r\n // directly input the value\r\n slider.value = joint.angle;\r\n\r\n if (viewer.ignoreLimits || joint.jointType === 'continuous') {\r\n slider.min = -6.28;\r\n slider.max = 6.28;\r\n\r\n input.min = -6.28 * RAD2DEG;\r\n input.max = 6.28 * RAD2DEG;\r\n } else {\r\n slider.min = joint.limit.lower;\r\n slider.max = joint.limit.upper;\r\n\r\n input.min = joint.limit.lower * RAD2DEG;\r\n input.max = joint.limit.upper * RAD2DEG;\r\n }\r\n };\r\n\r\n switch (joint.jointType) {\r\n\r\n case 'continuous':\r\n case 'prismatic':\r\n case 'revolute':\r\n break;\r\n default:\r\n li.update = () => {};\r\n input.remove();\r\n slider.remove();\r\n\r\n }\r\n\r\n slider.addEventListener('input', () => {\r\n viewer.setJointValue(joint.name, slider.value);\r\n li.update();\r\n });\r\n\r\n input.addEventListener('change', () => {\r\n viewer.setJointValue(joint.name, input.value * DEG2RAD);\r\n li.update();\r\n });\r\n\r\n li.update();\r\n\r\n sliders[joint.name] = li;\r\n\r\n });\r\n\r\n});\r\n\r\ndocument.addEventListener('WebComponentsReady', () => {\r\n\r\n viewer.loadMeshFunc = (path, manager, done) => {\r\n\r\n const ext = path.split(/\\./g).pop().toLowerCase();\r\n switch (ext) {\r\n\r\n case 'gltf':\r\n case 'glb':\r\n new GLTFLoader(manager).load(\r\n path,\r\n result => done(result.scene),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'obj':\r\n new OBJLoader(manager).load(\r\n path,\r\n result => done(result),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'dae':\r\n new ColladaLoader(manager).load(\r\n path,\r\n result => done(result.scene),\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n case 'stl':\r\n new STLLoader(manager).load(\r\n path,\r\n result => {\r\n const material = new THREE.MeshPhongMaterial();\r\n const mesh = new THREE.Mesh(result, material);\r\n done(mesh);\r\n },\r\n null,\r\n err => done(null, err)\r\n );\r\n break;\r\n\r\n }\r\n\r\n };\r\n\r\n document.querySelector('li[urdf]').dispatchEvent(new Event('click'));\r\n\r\n if (/javascript\\/example\\/build/i.test(window.location)) {\r\n viewer.package = '../../../urdf';\r\n }\r\n\r\n registerDragEvents(viewer, () => {\r\n setColor('#263238');\r\n animToggle.classList.remove('checked');\r\n });\r\n\r\n});\r\n\r\n// init 2D UI and animation\r\nconst updateAngles = () => {\r\n\r\n if (!viewer.setJointValue) return;\r\n\r\n // reset everything to 0 first\r\n const resetJointValues = viewer.angles;\r\n for (const name in resetJointValues) resetJointValues[name] = 0;\r\n viewer.setJointValues(resetJointValues);\r\n\r\n // animate the legs\r\n const time = Date.now() / 3e2;\r\n for (let i = 1; i <= 6; i++) {\r\n\r\n const offset = i * Math.PI / 3;\r\n const ratio = Math.max(0, Math.sin(time + offset));\r\n\r\n viewer.setJointValue(`HP${ i }`, THREE.MathUtils.lerp(30, 0, ratio) * DEG2RAD);\r\n viewer.setJointValue(`KP${ i }`, THREE.MathUtils.lerp(90, 150, ratio) * DEG2RAD);\r\n viewer.setJointValue(`AP${ i }`, THREE.MathUtils.lerp(-30, -60, ratio) * DEG2RAD);\r\n\r\n viewer.setJointValue(`TC${ i }A`, THREE.MathUtils.lerp(0, 0.065, ratio));\r\n viewer.setJointValue(`TC${ i }B`, THREE.MathUtils.lerp(0, 0.065, ratio));\r\n\r\n viewer.setJointValue(`W${ i }`, window.performance.now() * 0.001);\r\n\r\n }\r\n\r\n};\r\n\r\nconst updateLoop = () => {\r\n\r\n if (animToggle.classList.contains('checked')) {\r\n updateAngles();\r\n }\r\n\r\n requestAnimationFrame(updateLoop);\r\n\r\n};\r\n\r\ndocument.querySelectorAll('#urdf-options li[urdf]').forEach(el => {\r\n\r\n el.addEventListener('click', e => {\r\n\r\n const urdf = e.target.getAttribute('urdf');\r\n const color = e.target.getAttribute('color');\r\n\r\n viewer.up = '-Z';\r\n document.getElementById('up-select').value = viewer.up;\r\n viewer.urdf = urdf;\r\n animToggle.classList.add('checked');\r\n setColor(color);\r\n\r\n });\r\n\r\n});\r\n\r\ndocument.addEventListener('WebComponentsReady', () => {\r\n\r\n animToggle.addEventListener('click', () => animToggle.classList.toggle('checked'));\r\n\r\n // stop the animation if user tried to manipulate the model\r\n viewer.addEventListener('manipulate-start', e => animToggle.classList.remove('checked'));\r\n viewer.addEventListener('urdf-processed', e => updateAngles());\r\n updateLoop();\r\n viewer.camera.position.set(-5.5, 3.5, 5.5);\r\n\r\n});\r\n"],"names":["Node","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry","THREE.Vector2","THREE.Scene","THREE.HemisphereLight","THREE.DirectionalLight","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","THREE.sRGBEncoding","THREE.PerspectiveCamera","THREE.Object3D","THREE.PlaneBufferGeometry","THREE.ShadowMaterial","THREE.DoubleSide","THREE.Box3","THREE.Sphere","THREE.MeshBasicMaterial","THREE.GammaEncoding","THREE.LoadingManager","THREE.Raycaster","THREE.Plane","THREE.Line3","THREE.Color","THREE.MathUtils"],"mappings":"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AAC,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,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,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;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,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;CAC3D,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;CAC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EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,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;CAC/D,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;AACjE;CACA,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG,CAAC;AACnH;CACA,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D;CACA,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF;CACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACzB;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,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,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,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG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A,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,E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"} \ No newline at end of file diff --git a/javascript/example/bundle/simple.js b/javascript/example/bundle/simple.js index bc9e5e2b..d63f9be8 100644 --- a/javascript/example/bundle/simple.js +++ b/javascript/example/bundle/simple.js @@ -59489,10 +59489,13 @@ if (this.jointType === v) return; this._jointType = v; - + this.matrixWorldNeedsUpdate = true; switch (v) { case 'fixed': + this.jointValue = []; + break; + case 'continuous': case 'revolute': case 'prismatic': @@ -59518,6 +59521,7 @@ } constructor(...args) { + super(...args); this.isURDFJoint = true; @@ -59532,6 +59536,7 @@ this.origPosition = null; this.origQuaternion = null; + } /* Overrides */ @@ -59552,6 +59557,7 @@ this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null; return this; + } /* Public Functions */ @@ -59578,7 +59584,7 @@ let angle = values[0]; if (angle == null) return false; - if (angle === this.jointValue) return false; + if (angle === this.angle) return false; if (!this.ignoreLimits && this.jointType === 'revolute') { @@ -59610,7 +59616,7 @@ let pos = values[0]; if (pos == null) return false; - if (pos === this.jointValue) return false; + if (pos === this.angle) return false; if (!this.ignoreLimits) { @@ -59821,11 +59827,21 @@ this.parseCollision = false; this.packages = ''; this.workingPath = ''; - this.fetchOptions = null; + this.fetchOptions = {}; } /* Public API */ + loadAsync(urdf) { + + return new Promise((resolve, reject) => { + + this.load(urdf, resolve, null, reject); + + }); + + } + // urdf: The path to the URDF within the package OR absolute // onComplete: Callback that is passed the model once loaded load(urdf, onComplete, onProgress, onError) { @@ -59837,12 +59853,17 @@ const urdfPath = this.manager.resolveURL(urdf); manager.itemStart(urdfPath); + fetch(urdfPath, this.fetchOptions) .then(res => { + if (onProgress) { + onProgress(null); + } return res.text(); + }) .then(data => { @@ -59860,9 +59881,13 @@ .catch(e => { if (onError) { + onError(e); + } else { + console.error('URDFLoader: Error loading file.', e); + } manager.itemError(urdfPath); manager.itemEnd(urdfPath); diff --git a/javascript/example/bundle/simple.js.map b/javascript/example/bundle/simple.js.map index 8ea2496c..b574cc77 100644 --- a/javascript/example/bundle/simple.js.map +++ b/javascript/example/bundle/simple.js.map @@ -1 +1 @@ -{"version":3,"file":"simple.js","sources":["../../node_modules/three/build/three.module.js","../../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../node_modules/three/examples/jsm/controls/OrbitControls.js","../../node_modules/three/examples/jsm/webxr/VRButton.js","../../node_modules/three/examples/jsm/loaders/STLLoader.js","../../node_modules/three/examples/jsm/loaders/TGALoader.js","../../node_modules/three/examples/jsm/loaders/ColladaLoader.js","../../src/URDFClasses.js","../../src/URDFLoader.js","../src/simple.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '119';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\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 );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\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\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\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)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\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.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = RGBAFormat; // see #18859\n\tthis.texture.encoding = texture.encoding;\n\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\tthis.texture.minFilter = texture.minFilter;\n\tthis.texture.magFilter = texture.magFilter;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: /* glsl */`\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t}\n\t\t`,\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t`\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\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\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\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\";\n\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\";\n\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\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\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}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\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\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\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\";\n\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\";\n\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 vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\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)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\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)\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\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\";\n\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\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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;\";\n\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\";\n\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\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\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;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\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; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\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\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\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\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\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\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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 *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn !! extension;\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( ! this.has( name ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\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\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\t'out highp vec4 pc_fragColor;',\n\t\t\t'#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\", \"transmissionMap\"\n\t];\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\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,\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,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\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.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\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.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = [];\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t\tif ( window.XRHand ) {\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tlet joint = new Group();\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\tthis._hand.joints.push( joint );\n\t\t\t\t\t// ??\n\t\t\t\t\tthis._hand.add( joint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\n\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tlet jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\n\n\t\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t\t\t// Custom events\n\n\t\t\t\t\t\t// Check pinch\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchend\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchstart\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tvar maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material, parameters );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\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\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\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 );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\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 );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\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\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\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\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = ( tension !== undefined ) ? tension : 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\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 );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\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\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\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.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\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.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\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, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, 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, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, 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, LightShadow, 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, SpotLightShadow, 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 };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\t\tthis.ktx2Loader = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\n\n\t\t\tthis.ktx2Loader = ktx2Loader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager,\n\t\t\t\tktx2Loader: this.ktx2Loader\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Transmission Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n\t */\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * BasisU Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n\t * (draft PR https://github.com/KhronosGroup/glTF/pull/1751)\n\t */\n\tfunction GLTFTextureBasisUExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ this.name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype._markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.lightCache, nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t};\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tvar ref = object.clone();\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tpending.push( func( extensions[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar loader;\n\n\t\tif ( source.uri ) {\n\n\t\t\tloader = options.manager.getHandler( source.uri );\n\n\t\t}\n\n\t\tif ( ! loader ) {\n\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t: this.textureLoader;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\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\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\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\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.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\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.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tvar lightIndex = nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light;\n\n\t\t\t\tpending.push( parser.getDependency( 'light', lightIndex ).then( function ( light ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.lightCache, lightIndex, light );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min < max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.domElement.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\tscope.domElement.addEventListener( 'keydown', onKeyDown, false );\n\n\t// make sure element can receive keys.\n\n\tif ( scope.domElement.tabIndex === - 1 ) {\n\n\t\tscope.domElement.tabIndex = 0;\n\n\t}\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","var VRButton = {\n\n\tcreateButton: function ( renderer, options ) {\n\n\t\tif ( options ) {\n\n\t\t\tconsole.error( 'THREE.VRButton: The \"options\" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.' );\n\n\t\t}\n\n\t\tfunction showEnterVR( /*device*/ ) {\n\n\t\t\tvar currentSession = null;\n\n\t\t\tfunction onSessionStarted( session ) {\n\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\n\n\t\t\t\trenderer.xr.setSession( session );\n\t\t\t\tbutton.textContent = 'EXIT VR';\n\n\t\t\t\tcurrentSession = session;\n\n\t\t\t}\n\n\t\t\tfunction onSessionEnded( /*event*/ ) {\n\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\n\n\t\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\t\tcurrentSession = null;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\n\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\tbutton.onmouseenter = function () {\n\n\t\t\t\tbutton.style.opacity = '1.0';\n\n\t\t\t};\n\n\t\t\tbutton.onmouseleave = function () {\n\n\t\t\t\tbutton.style.opacity = '0.5';\n\n\t\t\t};\n\n\t\t\tbutton.onclick = function () {\n\n\t\t\t\tif ( currentSession === null ) {\n\n\t\t\t\t\t// WebXR's requestReferenceSpace only works if the corresponding feature\n\t\t\t\t\t// was requested at session creation time. For simplicity, just ask for\n\t\t\t\t\t// the interesting ones as optional features, but be aware that the\n\t\t\t\t\t// requestReferenceSpace call will fail if it turns out to be unavailable.\n\t\t\t\t\t// ('local' is always available for immersive sessions and doesn't need to\n\t\t\t\t\t// be requested separately.)\n\n\t\t\t\t\tvar sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking' ] };\n\t\t\t\t\tnavigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction disableButton() {\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\n\t\t\tbutton.onclick = null;\n\n\t\t}\n\n\t\tfunction showWebXRNotFound() {\n\n\t\t\tdisableButton();\n\n\t\t\tbutton.textContent = 'VR NOT SUPPORTED';\n\n\t\t}\n\n\t\tfunction stylizeElement( element ) {\n\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\n\t\t}\n\n\t\tif ( 'xr' in navigator ) {\n\n\t\t\tvar button = document.createElement( 'button' );\n\t\t\tbutton.id = 'VRButton';\n\t\t\tbutton.style.display = 'none';\n\n\t\t\tstylizeElement( button );\n\n\t\t\tnavigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) {\n\n\t\t\t\tsupported ? showEnterVR() : showWebXRNotFound();\n\n\t\t\t} );\n\n\t\t\treturn button;\n\n\t\t} else {\n\n\t\t\tvar message = document.createElement( 'a' );\n\n\t\t\tif ( window.isSecureContext === false ) {\n\n\t\t\t\tmessage.href = document.location.href.replace( /^http:/, 'https:' );\n\t\t\t\tmessage.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\n\n\t\t\t} else {\n\n\t\t\t\tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t\tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\n\t\t\t}\n\n\t\t\tmessage.style.left = 'calc(50% - 90px)';\n\t\t\tmessage.style.width = '180px';\n\t\t\tmessage.style.textDecoration = 'none';\n\n\t\t\tstylizeElement( message );\n\n\t\t\treturn message;\n\n\t\t}\n\n\t}\n\n};\n\nexport { VRButton };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tLoaderUtils,\n\tVector3\n} from \"../../../build/three.module.js\";\n/**\n * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files, with automatic detection of type.\n *\n * The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n * Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n * There is perhaps some question as to how valid it is to always assume little-endian-ness.\n * ASCII decoding assumes file is UTF-8.\n *\n * Usage:\n * var loader = new STLLoader();\n * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) {\n * scene.add( new THREE.Mesh( geometry ) );\n * });\n *\n * For binary STLs geometry might contain colors for vertices. To use it:\n * // use the same code to load STL as above\n * if (geometry.hasColors) {\n * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true });\n * } else { .... }\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For example:\n *\n * var materials = [];\n * var nGeometryGroups = geometry.groups.length;\n *\n * var colorMap = ...; // Some logic to index colors.\n *\n * for (var i = 0; i < nGeometryGroups; i++) {\n *\n *\t\tvar material = new THREE.MeshPhongMaterial({\n *\t\t\tcolor: colorMap[i],\n *\t\t\twireframe: false\n *\t\t});\n *\n * }\n *\n * materials.push(material);\n * var mesh = new THREE.Mesh(geometry, materials);\n */\n\n\nvar STLLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nSTLLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: STLLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tvar expect, face_size, n_faces, reader;\n\t\t\treader = new DataView( data );\n\t\t\tface_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tn_faces = reader.getUint32( 80, true );\n\t\t\texpect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful. So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tvar solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( var off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( var i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tvar reader = new DataView( data );\n\t\t\tvar faces = reader.getUint32( 80, true );\n\n\t\t\tvar r, g, b, hasColors = false, colors;\n\t\t\tvar defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( var index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar dataOffset = 84;\n\t\t\tvar faceLength = 12 * 4 + 2;\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tvar normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tfor ( var face = 0; face < faces; face ++ ) {\n\n\t\t\t\tvar start = dataOffset + face * faceLength;\n\t\t\t\tvar normalX = reader.getFloat32( start, true );\n\t\t\t\tvar normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tvar normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tvar packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tvar vertexstart = start + i * 12;\n\t\t\t\t\tvar componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolors[ componentIdx ] = r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\t\t\tvar patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tvar patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tvar faceCounter = 0;\n\n\t\t\tvar patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tvar patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tvar patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tvar vertices = [];\n\t\t\tvar normals = [];\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar result;\n\n\t\t\tvar groupCount = 0;\n\t\t\tvar startVertex = 0;\n\t\t\tvar endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tvar solid = result[ 0 ];\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tvar vertexCountPerFace = 0;\n\t\t\t\t\tvar normalCountPerFace = 0;\n\n\t\t\t\t\tvar text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tvar start = startVertex;\n\t\t\t\tvar count = endVertex - startVertex;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn LoaderUtils.decodeText( new Uint8Array( buffer ) );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tvar array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( var i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tvar binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n} );\n\nexport { STLLoader };\n","import {\n\tFileLoader,\n\tLoader,\n\tTexture\n} from \"../../../build/three.module.js\";\n\nvar TGALoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nTGALoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TGALoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttexture.image = scope.parse( buffer );\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tparse: function ( buffer ) {\n\n\t\t// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js\n\n\t\tfunction tgaCheckHeader( header ) {\n\n\t\t\tswitch ( header.image_type ) {\n\n\t\t\t\t// check indexed type\n\n\t\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\t\tif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// check colormap type\n\n\t\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\t\tif ( header.colormap_type ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// What the need of a file without data ?\n\n\t\t\t\tcase TGA_TYPE_NO_DATA:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t\t\t\t// Invalid type ?\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type \"%s\".', header.image_type );\n\n\t\t\t}\n\n\t\t\t// check image width and height\n\n\t\t\tif ( header.width <= 0 || header.height <= 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid image size.' );\n\n\t\t\t}\n\n\t\t\t// check image pixel size\n\n\t\t\tif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&\n\t\t\t\theader.pixel_size !== 24 && header.pixel_size !== 32 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid pixel size \"%s\".', header.pixel_size );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// parse tga image buffer\n\n\t\tfunction tgaParse( use_rle, use_pal, header, offset, data ) {\n\n\t\t\tvar pixel_data,\n\t\t\t\tpixel_size,\n\t\t\t\tpixel_total,\n\t\t\t\tpalettes;\n\n\t\t\tpixel_size = header.pixel_size >> 3;\n\t\t\tpixel_total = header.width * header.height * pixel_size;\n\n\t\t\t // read palettes\n\n\t\t\t if ( use_pal ) {\n\n\t\t\t\t palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );\n\n\t\t\t }\n\n\t\t\t // read RLE\n\n\t\t\t if ( use_rle ) {\n\n\t\t\t\t pixel_data = new Uint8Array( pixel_total );\n\n\t\t\t\tvar c, count, i;\n\t\t\t\tvar shift = 0;\n\t\t\t\tvar pixels = new Uint8Array( pixel_size );\n\n\t\t\t\twhile ( shift < pixel_total ) {\n\n\t\t\t\t\tc = data[ offset ++ ];\n\t\t\t\t\tcount = ( c & 0x7f ) + 1;\n\n\t\t\t\t\t// RLE pixels\n\n\t\t\t\t\tif ( c & 0x80 ) {\n\n\t\t\t\t\t\t// bind pixel tmp array\n\n\t\t\t\t\t\tfor ( i = 0; i < pixel_size; ++ i ) {\n\n\t\t\t\t\t\t\tpixels[ i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// copy pixel array\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data.set( pixels, shift + i * pixel_size );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += pixel_size * count;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// raw pixels\n\n\t\t\t\t\t\tcount *= pixel_size;\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data[ shift + i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += count;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t } else {\n\n\t\t\t\t// raw pixels\n\n\t\t\t\tpixel_data = data.subarray(\n\t\t\t\t\t offset, offset += ( use_pal ? header.width * header.height : pixel_total )\n\t\t\t\t);\n\n\t\t\t }\n\n\t\t\t return {\n\t\t\t\tpixel_data: pixel_data,\n\t\t\t\tpalettes: palettes\n\t\t\t };\n\n\t\t}\n\n\t\tfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {\n\n\t\t\tvar colormap = palettes;\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\tcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 ); // Inversed ?\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) >> 3;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction getTgaRGBA( data, width, height, image, palette ) {\n\n\t\t\tvar x_start,\n\t\t\t\ty_start,\n\t\t\t\tx_step,\n\t\t\t\ty_step,\n\t\t\t\tx_end,\n\t\t\t\ty_end;\n\n\t\t\tswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {\n\n\t\t\t\tdefault:\n\t\t\t\tcase TGA_ORIGIN_UL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_UR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( use_grey ) {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 24:\n\t\t\t\t\t\ttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\ttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Load image data according to specific method\n\t\t\t// var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';\n\t\t\t// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// TGA constants\n\n\t\tvar TGA_TYPE_NO_DATA = 0,\n\t\t\tTGA_TYPE_INDEXED = 1,\n\t\t\tTGA_TYPE_RGB = 2,\n\t\t\tTGA_TYPE_GREY = 3,\n\t\t\tTGA_TYPE_RLE_INDEXED = 9,\n\t\t\tTGA_TYPE_RLE_RGB = 10,\n\t\t\tTGA_TYPE_RLE_GREY = 11,\n\n\t\t\tTGA_ORIGIN_MASK = 0x30,\n\t\t\tTGA_ORIGIN_SHIFT = 0x04,\n\t\t\tTGA_ORIGIN_BL = 0x00,\n\t\t\tTGA_ORIGIN_BR = 0x01,\n\t\t\tTGA_ORIGIN_UL = 0x02,\n\t\t\tTGA_ORIGIN_UR = 0x03;\n\n\t\tif ( buffer.length < 19 ) console.error( 'THREE.TGALoader: Not enough data to contain header.' );\n\n\t\tvar content = new Uint8Array( buffer ),\n\t\t\toffset = 0,\n\t\t\theader = {\n\t\t\t\tid_length: content[ offset ++ ],\n\t\t\t\tcolormap_type: content[ offset ++ ],\n\t\t\t\timage_type: content[ offset ++ ],\n\t\t\t\tcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_size: content[ offset ++ ],\n\t\t\t\torigin: [\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8\n\t\t\t\t],\n\t\t\t\twidth: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\theight: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tpixel_size: content[ offset ++ ],\n\t\t\t\tflags: content[ offset ++ ]\n\t\t\t};\n\n\t\t// check tga if it is valid format\n\n\t\ttgaCheckHeader( header );\n\n\t\tif ( header.id_length + offset > buffer.length ) {\n\n\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t}\n\n\t\t// skip the needn't data\n\n\t\toffset += header.id_length;\n\n\t\t// get targa information about RLE compression and palette\n\n\t\tvar use_rle = false,\n\t\t\tuse_pal = false,\n\t\t\tuse_grey = false;\n\n\t\tswitch ( header.image_type ) {\n\n\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tuse_rle = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t//\n\n\t\tvar useOffscreen = typeof OffscreenCanvas !== 'undefined';\n\n\t\tvar canvas = useOffscreen ? new OffscreenCanvas( header.width, header.height ) : document.createElement( 'canvas' );\n\t\tcanvas.width = header.width;\n\t\tcanvas.height = header.height;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tvar imageData = context.createImageData( header.width, header.height );\n\n\t\tvar result = tgaParse( use_rle, use_pal, header, offset, content );\n\t\tgetTgaRGBA( imageData.data, header.width, header.height, result.pixel_data, result.palettes );\n\n\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\treturn useOffscreen ? canvas.transferToImageBitmap() : canvas;\n\n\t}\n\n} );\n\nexport { TGALoader };\n","import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTextureLoader,\n\tVector3,\n\tVectorKeyframeTrack\n} from \"../../../build/three.module.js\";\nimport { TGALoader } from \"../loaders/TGALoader.js\";\n\nvar ColladaLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nColladaLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ColladaLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\toptions: {\n\n\t\tset convertUpAxis( value ) {\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.' );\n\n\t\t}\n\n\t},\n\n\tparse: function ( text, path ) {\n\n\t\tfunction getElementsByTagName( xml, name ) {\n\n\t\t\t// Non recursive xml.getElementsByTagName() ...\n\n\t\t\tvar array = [];\n\t\t\tvar childNodes = xml.childNodes;\n\n\t\t\tfor ( var i = 0, l = childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = childNodes[ i ];\n\n\t\t\t\tif ( child.nodeName === name ) {\n\n\t\t\t\t\tarray.push( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseStrings( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parts[ i ];\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseFloats( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseFloat( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseInts( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseInt( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseId( text ) {\n\n\t\t\treturn text.substring( 1 );\n\n\t\t}\n\n\t\tfunction generateId() {\n\n\t\t\treturn 'three_default_' + ( count ++ );\n\n\t\t}\n\n\t\tfunction isEmpty( object ) {\n\n\t\t\treturn Object.keys( object ).length === 0;\n\n\t\t}\n\n\t\t// asset\n\n\t\tfunction parseAsset( xml ) {\n\n\t\t\treturn {\n\t\t\t\tunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),\n\t\t\t\tupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseAssetUnit( xml ) {\n\n\t\t\tif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {\n\n\t\t\t\treturn parseFloat( xml.getAttribute( 'meter' ) );\n\n\t\t\t} else {\n\n\t\t\t\treturn 1; // default 1 meter\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAssetUpAxis( xml ) {\n\n\t\t\treturn xml !== undefined ? xml.textContent : 'Y_UP';\n\n\t\t}\n\n\t\t// library\n\n\t\tfunction parseLibrary( xml, libraryName, nodeName, parser ) {\n\n\t\t\tvar library = getElementsByTagName( xml, libraryName )[ 0 ];\n\n\t\t\tif ( library !== undefined ) {\n\n\t\t\t\tvar elements = getElementsByTagName( library, nodeName );\n\n\t\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\t\tparser( elements[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildLibrary( data, builder ) {\n\n\t\t\tfor ( var name in data ) {\n\n\t\t\t\tvar object = data[ name ];\n\t\t\t\tobject.build = builder( data[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// get\n\n\t\tfunction getBuild( data, builder ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\tdata.build = builder( data );\n\n\t\t\treturn data.build;\n\n\t\t}\n\n\t\t// animation\n\n\t\tfunction parseAnimation( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {},\n\t\t\t\tsamplers: {},\n\t\t\t\tchannels: {}\n\t\t\t};\n\n\t\t\tvar hasChildren = false;\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.samplers[ id ] = parseAnimationSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'channel':\n\t\t\t\t\t\tid = child.getAttribute( 'target' );\n\t\t\t\t\t\tdata.channels[ id ] = parseAnimationChannel( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'animation':\n\t\t\t\t\t\t// hierarchy of related animations\n\t\t\t\t\t\tparseAnimation( child );\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasChildren === false ) {\n\n\t\t\t\t// since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment\n\n\t\t\t\tlibrary.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimationSampler( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {},\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseAnimationChannel( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tvar target = xml.getAttribute( 'target' );\n\n\t\t\t// parsing SID Addressing Syntax\n\n\t\t\tvar parts = target.split( '/' );\n\n\t\t\tvar id = parts.shift();\n\t\t\tvar sid = parts.shift();\n\n\t\t\t// check selection syntax\n\n\t\t\tvar arraySyntax = ( sid.indexOf( '(' ) !== - 1 );\n\t\t\tvar memberSyntax = ( sid.indexOf( '.' ) !== - 1 );\n\n\t\t\tif ( memberSyntax ) {\n\n\t\t\t\t// member selection access\n\n\t\t\t\tparts = sid.split( '.' );\n\t\t\t\tsid = parts.shift();\n\t\t\t\tdata.member = parts.shift();\n\n\t\t\t} else if ( arraySyntax ) {\n\n\t\t\t\t// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.\n\n\t\t\t\tvar indices = sid.split( '(' );\n\t\t\t\tsid = indices.shift();\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i ++ ) {\n\n\t\t\t\t\tindices[ i ] = parseInt( indices[ i ].replace( /\\)/, '' ) );\n\n\t\t\t\t}\n\n\t\t\t\tdata.indices = indices;\n\n\t\t\t}\n\n\t\t\tdata.id = id;\n\t\t\tdata.sid = sid;\n\n\t\t\tdata.arraySyntax = arraySyntax;\n\t\t\tdata.memberSyntax = memberSyntax;\n\n\t\t\tdata.sampler = parseId( xml.getAttribute( 'source' ) );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildAnimation( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar channels = data.channels;\n\t\t\tvar samplers = data.samplers;\n\t\t\tvar sources = data.sources;\n\n\t\t\tfor ( var target in channels ) {\n\n\t\t\t\tif ( channels.hasOwnProperty( target ) ) {\n\n\t\t\t\t\tvar channel = channels[ target ];\n\t\t\t\t\tvar sampler = samplers[ channel.sampler ];\n\n\t\t\t\t\tvar inputId = sampler.inputs.INPUT;\n\t\t\t\t\tvar outputId = sampler.inputs.OUTPUT;\n\n\t\t\t\t\tvar inputSource = sources[ inputId ];\n\t\t\t\t\tvar outputSource = sources[ outputId ];\n\n\t\t\t\t\tvar animation = buildAnimationChannel( channel, inputSource, outputSource );\n\n\t\t\t\t\tcreateKeyframeTracks( animation, tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction getAnimation( id ) {\n\n\t\t\treturn getBuild( library.animations[ id ], buildAnimation );\n\n\t\t}\n\n\t\tfunction buildAnimationChannel( channel, inputSource, outputSource ) {\n\n\t\t\tvar node = library.nodes[ channel.id ];\n\t\t\tvar object3D = getNode( node.id );\n\n\t\t\tvar transform = node.transforms[ channel.sid ];\n\t\t\tvar defaultMatrix = node.matrix.clone().transpose();\n\n\t\t\tvar time, stride;\n\t\t\tvar i, il, j, jl;\n\n\t\t\tvar data = {};\n\n\t\t\t// the collada spec allows the animation of data in various ways.\n\t\t\t// depending on the transform type (matrix, translate, rotate, scale), we execute different logic\n\n\t\t\tswitch ( transform ) {\n\n\t\t\t\tcase 'matrix':\n\n\t\t\t\t\tfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\ttime = inputSource.array[ i ];\n\t\t\t\t\t\tstride = i * outputSource.stride;\n\n\t\t\t\t\t\tif ( data[ time ] === undefined ) data[ time ] = {};\n\n\t\t\t\t\t\tif ( channel.arraySyntax === true ) {\n\n\t\t\t\t\t\t\tvar value = outputSource.array[ stride ];\n\t\t\t\t\t\t\tvar index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];\n\n\t\t\t\t\t\t\tdata[ time ][ index ] = value;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tdata[ time ][ j ] = outputSource.array[ stride + j ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'scale':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tvar keyframes = prepareAnimationData( data, defaultMatrix );\n\n\t\t\tvar animation = {\n\t\t\t\tname: object3D.uuid,\n\t\t\t\tkeyframes: keyframes\n\t\t\t};\n\n\t\t\treturn animation;\n\n\t\t}\n\n\t\tfunction prepareAnimationData( data, defaultMatrix ) {\n\n\t\t\tvar keyframes = [];\n\n\t\t\t// transfer data into a sortable array\n\n\t\t\tfor ( var time in data ) {\n\n\t\t\t\tkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );\n\n\t\t\t}\n\n\t\t\t// ensure keyframes are sorted by time\n\n\t\t\tkeyframes.sort( ascending );\n\n\t\t\t// now we clean up all animation data, so we can use them for keyframe tracks\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\ttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );\n\n\t\t\t}\n\n\t\t\treturn keyframes;\n\n\t\t\t// array sort function\n\n\t\t\tfunction ascending( a, b ) {\n\n\t\t\t\treturn a.time - b.time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\tfunction createKeyframeTracks( animation, tracks ) {\n\n\t\t\tvar keyframes = animation.keyframes;\n\t\t\tvar name = animation.name;\n\n\t\t\tvar times = [];\n\t\t\tvar positionData = [];\n\t\t\tvar quaternionData = [];\n\t\t\tvar scaleData = [];\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tvar time = keyframe.time;\n\t\t\t\tvar value = keyframe.value;\n\n\t\t\t\tmatrix.fromArray( value ).transpose();\n\t\t\t\tmatrix.decompose( position, quaternion, scale );\n\n\t\t\t\ttimes.push( time );\n\t\t\t\tpositionData.push( position.x, position.y, position.z );\n\t\t\t\tquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );\n\t\t\t\tscaleData.push( scale.x, scale.y, scale.z );\n\n\t\t\t}\n\n\t\t\tif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );\n\t\t\tif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );\n\t\t\tif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction transformAnimationData( keyframes, property, defaultValue ) {\n\n\t\t\tvar keyframe;\n\n\t\t\tvar empty = true;\n\t\t\tvar i, l;\n\n\t\t\t// check, if values of a property are missing in our keyframes\n\n\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === undefined ) {\n\n\t\t\t\t\tkeyframe.value[ property ] = null; // mark as missing\n\n\t\t\t\t} else {\n\n\t\t\t\t\tempty = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( empty === true ) {\n\n\t\t\t\t// no values at all, so we set a default value\n\n\t\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\t\tkeyframe.value[ property ] = defaultValue;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// filling gaps\n\n\t\t\t\tcreateMissingKeyframes( keyframes, property );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createMissingKeyframes( keyframes, property ) {\n\n\t\t\tvar prev, next;\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === null ) {\n\n\t\t\t\t\tprev = getPrev( keyframes, i, property );\n\t\t\t\t\tnext = getNext( keyframes, i, property );\n\n\t\t\t\t\tif ( prev === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = next.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( next === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = prev.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinterpolate( keyframe, prev, next, property );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getPrev( keyframes, i, property ) {\n\n\t\t\twhile ( i >= 0 ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti --;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction getNext( keyframes, i, property ) {\n\n\t\t\twhile ( i < keyframes.length ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction interpolate( key, prev, next, property ) {\n\n\t\t\tif ( ( next.time - prev.time ) === 0 ) {\n\n\t\t\t\tkey.value[ property ] = prev.value[ property ];\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];\n\n\t\t}\n\n\t\t// animation clips\n\n\t\tfunction parseAnimationClip( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'id' ) || 'default',\n\t\t\t\tstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),\n\t\t\t\tend: parseFloat( xml.getAttribute( 'end' ) || 0 ),\n\t\t\t\tanimations: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_animation':\n\t\t\t\t\t\tdata.animations.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.clips[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildAnimationClip( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar name = data.name;\n\t\t\tvar duration = ( data.end - data.start ) || - 1;\n\t\t\tvar animations = data.animations;\n\n\t\t\tfor ( var i = 0, il = animations.length; i < il; i ++ ) {\n\n\t\t\t\tvar animationTracks = getAnimation( animations[ i ] );\n\n\t\t\t\tfor ( var j = 0, jl = animationTracks.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttracks.push( animationTracks[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, duration, tracks );\n\n\t\t}\n\n\t\tfunction getAnimationClip( id ) {\n\n\t\t\treturn getBuild( library.clips[ id ], buildAnimationClip );\n\n\t\t}\n\n\t\t// controller\n\n\t\tfunction parseController( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'skin':\n\t\t\t\t\t\t// there is exactly one skin per controller\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.skin = parseSkin( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'morph':\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSkin( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_shape_matrix':\n\t\t\t\t\t\tdata.bindShapeMatrix = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tvar id = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'joints':\n\t\t\t\t\t\tdata.joints = parseJoints( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertex_weights':\n\t\t\t\t\t\tdata.vertexWeights = parseVertexWeights( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseJoints( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseVertexWeights( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = { id: id, offset: offset };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tdata.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v':\n\t\t\t\t\t\tdata.v = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildController( data ) {\n\n\t\t\tvar build = {\n\t\t\t\tid: data.id\n\t\t\t};\n\n\t\t\tvar geometry = library.geometries[ build.id ];\n\n\t\t\tif ( data.skin !== undefined ) {\n\n\t\t\t\tbuild.skin = buildSkin( data.skin );\n\n\t\t\t\t// we enhance the 'sources' property of the corresponding geometry with our skin data\n\n\t\t\t\tgeometry.sources.skinIndices = build.skin.indices;\n\t\t\t\tgeometry.sources.skinWeights = build.skin.weights;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildSkin( data ) {\n\n\t\t\tvar BONE_LIMIT = 4;\n\n\t\t\tvar build = {\n\t\t\t\tjoints: [], // this must be an array to preserve the joint order\n\t\t\t\tindices: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t},\n\t\t\t\tweights: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertexWeights = data.vertexWeights;\n\n\t\t\tvar vcount = vertexWeights.vcount;\n\t\t\tvar v = vertexWeights.v;\n\t\t\tvar jointOffset = vertexWeights.inputs.JOINT.offset;\n\t\t\tvar weightOffset = vertexWeights.inputs.WEIGHT.offset;\n\n\t\t\tvar jointSource = data.sources[ data.joints.inputs.JOINT ];\n\t\t\tvar inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];\n\n\t\t\tvar weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;\n\t\t\tvar stride = 0;\n\n\t\t\tvar i, j, l;\n\n\t\t\t// procces skin data for each vertex\n\n\t\t\tfor ( i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\tvar jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex\n\t\t\t\tvar vertexSkinData = [];\n\n\t\t\t\tfor ( j = 0; j < jointCount; j ++ ) {\n\n\t\t\t\t\tvar skinIndex = v[ stride + jointOffset ];\n\t\t\t\t\tvar weightId = v[ stride + weightOffset ];\n\t\t\t\t\tvar skinWeight = weights[ weightId ];\n\n\t\t\t\t\tvertexSkinData.push( { index: skinIndex, weight: skinWeight } );\n\n\t\t\t\t\tstride += 2;\n\n\t\t\t\t}\n\n\t\t\t\t// we sort the joints in descending order based on the weights.\n\t\t\t\t// this ensures, we only procced the most important joints of the vertex\n\n\t\t\t\tvertexSkinData.sort( descending );\n\n\t\t\t\t// now we provide for each vertex a set of four index and weight values.\n\t\t\t\t// the order of the skin data matches the order of vertices\n\n\t\t\t\tfor ( j = 0; j < BONE_LIMIT; j ++ ) {\n\n\t\t\t\t\tvar d = vertexSkinData[ j ];\n\n\t\t\t\t\tif ( d !== undefined ) {\n\n\t\t\t\t\t\tbuild.indices.array.push( d.index );\n\t\t\t\t\t\tbuild.weights.array.push( d.weight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbuild.indices.array.push( 0 );\n\t\t\t\t\t\tbuild.weights.array.push( 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup bind matrix\n\n\t\t\tif ( data.bindShapeMatrix ) {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();\n\n\t\t\t} else {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().identity();\n\n\t\t\t}\n\n\t\t\t// process bones and inverse bind matrix data\n\n\t\t\tfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {\n\n\t\t\t\tvar name = jointSource.array[ i ];\n\t\t\t\tvar boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();\n\n\t\t\t\tbuild.joints.push( { name: name, boneInverse: boneInverse } );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t\t// array sort function\n\n\t\t\tfunction descending( a, b ) {\n\n\t\t\t\treturn b.weight - a.weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getController( id ) {\n\n\t\t\treturn getBuild( library.controllers[ id ], buildController );\n\n\t\t}\n\n\t\t// image\n\n\t\tfunction parseImage( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent\n\t\t\t};\n\n\t\t\tlibrary.images[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildImage( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data.init_from;\n\n\t\t}\n\n\t\tfunction getImage( id ) {\n\n\t\t\tvar data = library.images[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildImage );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find image with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// effect\n\n\t\tfunction parseEffect( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'profile_COMMON':\n\t\t\t\t\t\tdata.profile = parseEffectProfileCOMMON( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.effects[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseEffectProfileCOMMON( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsurfaces: {},\n\t\t\t\tsamplers: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'newparam':\n\t\t\t\t\t\tparseEffectNewparam( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectNewparam( xml, data ) {\n\n\t\t\tvar sid = xml.getAttribute( 'sid' );\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'surface':\n\t\t\t\t\t\tdata.surfaces[ sid ] = parseEffectSurface( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler2D':\n\t\t\t\t\t\tdata.samplers[ sid ] = parseEffectSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectSurface( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'init_from':\n\t\t\t\t\t\tdata.init_from = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectSampler( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.source = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'constant':\n\t\t\t\t\tcase 'lambert':\n\t\t\t\t\tcase 'blinn':\n\t\t\t\t\tcase 'phong':\n\t\t\t\t\t\tdata.type = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseEffectParameters( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectParameter( child );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tdata[ child.nodeName ] = {\n\t\t\t\t\t\t\topaque: child.getAttribute( 'opaque' ),\n\t\t\t\t\t\t\tdata: parseEffectParameter( child )\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameter( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'float':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTexture( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttechnique: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tparseEffectParameterTextureExtra( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtra( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tparseEffectParameterTextureExtraTechnique( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtraTechnique( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'repeatU':\n\t\t\t\t\tcase 'repeatV':\n\t\t\t\t\tcase 'offsetU':\n\t\t\t\t\tcase 'offsetV':\n\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'wrapU':\n\t\t\t\t\tcase 'wrapV':\n\n\t\t\t\t\t\t// some files have values for wrapU/wrapV which become NaN via parseInt\n\n\t\t\t\t\t\tif ( child.textContent.toUpperCase() === 'TRUE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 1;\n\n\t\t\t\t\t\t} else if ( child.textContent.toUpperCase() === 'FALSE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseInt( child.textContent );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectExtra( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectExtraTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseInt( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildEffect( data ) {\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getEffect( id ) {\n\n\t\t\treturn getBuild( library.effects[ id ], buildEffect );\n\n\t\t}\n\n\t\t// material\n\n\t\tfunction parseMaterial( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_effect':\n\t\t\t\t\t\tdata.url = parseId( child.getAttribute( 'url' ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.materials[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction getTextureLoader( image ) {\n\n\t\t\tvar loader;\n\n\t\t\tvar extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/\n\t\t\textension = extension.toLowerCase();\n\n\t\t\tswitch ( extension ) {\n\n\t\t\t\tcase 'tga':\n\t\t\t\t\tloader = tgaLoader;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tloader = textureLoader;\n\n\t\t\t}\n\n\t\t\treturn loader;\n\n\t\t}\n\n\t\tfunction buildMaterial( data ) {\n\n\t\t\tvar effect = getEffect( data.url );\n\t\t\tvar technique = effect.profile.technique;\n\t\t\tvar extra = effect.profile.extra;\n\n\t\t\tvar material;\n\n\t\t\tswitch ( technique.type ) {\n\n\t\t\t\tcase 'phong':\n\t\t\t\tcase 'blinn':\n\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lambert':\n\t\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmaterial = new MeshBasicMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tmaterial.name = data.name || '';\n\n\t\t\tfunction getTexture( textureObject ) {\n\n\t\t\t\tvar sampler = effect.profile.samplers[ textureObject.id ];\n\t\t\t\tvar image = null;\n\n\t\t\t\t// get image\n\n\t\t\t\tif ( sampler !== undefined ) {\n\n\t\t\t\t\tvar surface = effect.profile.surfaces[ sampler.source ];\n\t\t\t\t\timage = getImage( surface.init_from );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );\n\t\t\t\t\timage = getImage( textureObject.id );\n\n\t\t\t\t}\n\n\t\t\t\t// create texture if image is avaiable\n\n\t\t\t\tif ( image !== null ) {\n\n\t\t\t\t\tvar loader = getTextureLoader( image );\n\n\t\t\t\t\tif ( loader !== undefined ) {\n\n\t\t\t\t\t\tvar texture = loader.load( image );\n\n\t\t\t\t\t\tvar extra = textureObject.extra;\n\n\t\t\t\t\t\tif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {\n\n\t\t\t\t\t\t\tvar technique = extra.technique;\n\n\t\t\t\t\t\t\ttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\t\t\t\t\t\ttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );\n\t\t\t\t\t\t\ttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttexture.wrapS = RepeatWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t create texture with ID:', textureObject.id );\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parameters = technique.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvar parameter = parameters[ key ];\n\n\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\t\tif ( parameter.color ) material.color.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.map = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\t\tif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tif ( parameter.texture ) material.lightMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tif ( parameter.float && material.shininess ) material.shininess = parameter.float;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\t\tif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar transparent = parameters[ 'transparent' ];\n\t\t\tvar transparency = parameters[ 'transparency' ];\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparency === undefined && transparent ) {\n\n\t\t\t\ttransparency = {\n\t\t\t\t\tfloat: 1\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparent === undefined && transparency ) {\n\n\t\t\t\ttransparent = {\n\t\t\t\t\topaque: 'A_ONE',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcolor: [ 1, 1, 1, 1 ]\n\t\t\t\t\t} };\n\n\t\t\t}\n\n\t\t\tif ( transparent && transparency ) {\n\n\t\t\t\t// handle case if a texture exists but no color\n\n\t\t\t\tif ( transparent.data.texture ) {\n\n\t\t\t\t\t// we do not set an alpha map (see #13792)\n\n\t\t\t\t\tmaterial.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = transparent.data.color;\n\n\t\t\t\t\tswitch ( transparent.opaque ) {\n\n\t\t\t\t\t\tcase 'A_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 3 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'A_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 0 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.', transparent.opaque );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.opacity < 1 ) material.transparent = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction getMaterial( id ) {\n\n\t\t\treturn getBuild( library.materials[ id ], buildMaterial );\n\n\t\t}\n\n\t\t// camera\n\n\t\tfunction parseCamera( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'optics':\n\t\t\t\t\t\tdata.optics = parseCameraOptics( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseCameraOptics( xml ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\treturn parseCameraTechnique( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {};\n\n\t\t}\n\n\t\tfunction parseCameraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'perspective':\n\t\t\t\t\tcase 'orthographic':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseCameraParameters( child );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseCameraParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'xfov':\n\t\t\t\t\tcase 'yfov':\n\t\t\t\t\tcase 'xmag':\n\t\t\t\t\tcase 'ymag':\n\t\t\t\t\tcase 'znear':\n\t\t\t\t\tcase 'zfar':\n\t\t\t\t\tcase 'aspect_ratio':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildCamera( data ) {\n\n\t\t\tvar camera;\n\n\t\t\tswitch ( data.optics.technique ) {\n\n\t\t\t\tcase 'perspective':\n\t\t\t\t\tcamera = new PerspectiveCamera(\n\t\t\t\t\t\tdata.optics.parameters.yfov,\n\t\t\t\t\t\tdata.optics.parameters.aspect_ratio,\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'orthographic':\n\t\t\t\t\tvar ymag = data.optics.parameters.ymag;\n\t\t\t\t\tvar xmag = data.optics.parameters.xmag;\n\t\t\t\t\tvar aspectRatio = data.optics.parameters.aspect_ratio;\n\n\t\t\t\t\txmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;\n\t\t\t\t\tymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;\n\n\t\t\t\t\txmag *= 0.5;\n\t\t\t\t\tymag *= 0.5;\n\n\t\t\t\t\tcamera = new OrthographicCamera(\n\t\t\t\t\t\t- xmag, xmag, ymag, - ymag, // left, right, top, bottom\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcamera.name = data.name || '';\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tfunction getCamera( id ) {\n\n\t\t\tvar data = library.cameras[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildCamera );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find camera with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// light\n\n\t\tfunction parseLight( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tdata = parseLightTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.lights[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseLightTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\tcase 'point':\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\tcase 'ambient':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseLightParameters( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseLightParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.color = new Color().fromArray( array );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'falloff_angle':\n\t\t\t\t\t\tdata.falloffAngle = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'quadratic_attenuation':\n\t\t\t\t\t\tvar f = parseFloat( child.textContent );\n\t\t\t\t\t\tdata.distance = f ? Math.sqrt( 1 / f ) : 0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildLight( data ) {\n\n\t\t\tvar light;\n\n\t\t\tswitch ( data.technique ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlight = new DirectionalLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlight = new PointLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlight = new SpotLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ambient':\n\t\t\t\t\tlight = new AmbientLight();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( data.parameters.color ) light.color.copy( data.parameters.color );\n\t\t\tif ( data.parameters.distance ) light.distance = data.parameters.distance;\n\n\t\t\treturn light;\n\n\t\t}\n\n\t\tfunction getLight( id ) {\n\n\t\t\tvar data = library.lights[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildLight );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find light with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// geometry\n\n\t\tfunction parseGeometry( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tsources: {},\n\t\t\t\tvertices: {},\n\t\t\t\tprimitives: []\n\t\t\t};\n\n\t\t\tvar mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];\n\n\t\t\t// the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep\n\t\t\tif ( mesh === undefined ) return;\n\n\t\t\tfor ( var i = 0; i < mesh.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = mesh.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id = child.getAttribute( 'id' );\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertices':\n\t\t\t\t\t\t// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];\n\t\t\t\t\t\tdata.vertices = parseGeometryVertices( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polygons':\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tdata.primitives.push( parseGeometryPrimitive( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSource( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tarray: [],\n\t\t\t\tstride: 3\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'float_array':\n\t\t\t\t\t\tdata.array = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Name_array':\n\t\t\t\t\t\tdata.array = parseStrings( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tvar accessor = getElementsByTagName( child, 'accessor' )[ 0 ];\n\n\t\t\t\t\t\tif ( accessor !== undefined ) {\n\n\t\t\t\t\t\t\tdata.stride = parseInt( accessor.getAttribute( 'stride' ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryVertices( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryPrimitive( xml ) {\n\n\t\t\tvar primitive = {\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tmaterial: xml.getAttribute( 'material' ),\n\t\t\t\tcount: parseInt( xml.getAttribute( 'count' ) ),\n\t\t\t\tinputs: {},\n\t\t\t\tstride: 0,\n\t\t\t\thasUV: false\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tvar set = parseInt( child.getAttribute( 'set' ) );\n\t\t\t\t\t\tvar inputname = ( set > 0 ? semantic + set : semantic );\n\t\t\t\t\t\tprimitive.inputs[ inputname ] = { id: id, offset: offset };\n\t\t\t\t\t\tprimitive.stride = Math.max( primitive.stride, offset + 1 );\n\t\t\t\t\t\tif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tprimitive.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'p':\n\t\t\t\t\t\tprimitive.p = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn primitive;\n\n\t\t}\n\n\t\tfunction groupPrimitives( primitives ) {\n\n\t\t\tvar build = {};\n\n\t\t\tfor ( var i = 0; i < primitives.length; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];\n\n\t\t\t\tbuild[ primitive.type ].push( primitive );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction checkUVCoordinates( primitives ) {\n\n\t\t\tvar count = 0;\n\n\t\t\tfor ( var i = 0, l = primitives.length; i < l; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( primitive.hasUV === true ) {\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count > 0 && count < primitives.length ) {\n\n\t\t\t\tprimitives.uvsNeedsFix = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildGeometry( data ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertices = data.vertices;\n\t\t\tvar primitives = data.primitives;\n\n\t\t\tif ( primitives.length === 0 ) return {};\n\n\t\t\t// our goal is to create one buffer geometry for a single type of primitives\n\t\t\t// first, we group all primitives by their type\n\n\t\t\tvar groupedPrimitives = groupPrimitives( primitives );\n\n\t\t\tfor ( var type in groupedPrimitives ) {\n\n\t\t\t\tvar primitiveType = groupedPrimitives[ type ];\n\n\t\t\t\t// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)\n\n\t\t\t\tcheckUVCoordinates( primitiveType );\n\n\t\t\t\t// third, create a buffer geometry for each type of primitives\n\n\t\t\t\tbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryType( primitives, sources, vertices ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar position = { array: [], stride: 0 };\n\t\t\tvar normal = { array: [], stride: 0 };\n\t\t\tvar uv = { array: [], stride: 0 };\n\t\t\tvar uv2 = { array: [], stride: 0 };\n\t\t\tvar color = { array: [], stride: 0 };\n\n\t\t\tvar skinIndex = { array: [], stride: 4 };\n\t\t\tvar skinWeight = { array: [], stride: 4 };\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar materialKeys = [];\n\n\t\t\tvar start = 0;\n\n\t\t\tfor ( var p = 0; p < primitives.length; p ++ ) {\n\n\t\t\t\tvar primitive = primitives[ p ];\n\t\t\t\tvar inputs = primitive.inputs;\n\n\t\t\t\t// groups\n\n\t\t\t\tvar count = 0;\n\n\t\t\t\tswitch ( primitive.type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tcount = primitive.count * 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tcount = primitive.count * 3;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polylist':\n\n\t\t\t\t\t\tfor ( var g = 0; g < primitive.count; g ++ ) {\n\n\t\t\t\t\t\t\tvar vc = primitive.vcount[ g ];\n\n\t\t\t\t\t\t\tswitch ( vc ) {\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcount += 3; // single triangle\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tcount += 6; // quad, subdivided into two triangles\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tcount += ( vc - 2 ) * 3; // polylist with more than four vertices\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addGroup( start, count, p );\n\t\t\t\tstart += count;\n\n\t\t\t\t// material\n\n\t\t\t\tif ( primitive.material ) {\n\n\t\t\t\t\tmaterialKeys.push( primitive.material );\n\n\t\t\t\t}\n\n\t\t\t\t// geometry data\n\n\t\t\t\tfor ( var name in inputs ) {\n\n\t\t\t\t\tvar input = inputs[ name ];\n\n\t\t\t\t\tswitch ( name )\t{\n\n\t\t\t\t\t\tcase 'VERTEX':\n\t\t\t\t\t\t\tfor ( var key in vertices ) {\n\n\t\t\t\t\t\t\t\tvar id = vertices[ key ];\n\n\t\t\t\t\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\t\t\t\t\tcase 'POSITION':\n\t\t\t\t\t\t\t\t\t\tvar prevLength = position.array.length;\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, position.array );\n\t\t\t\t\t\t\t\t\t\tposition.stride = sources[ id ].stride;\n\n\t\t\t\t\t\t\t\t\t\tif ( sources.skinWeights && sources.skinIndices ) {\n\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// see #3803\n\n\t\t\t\t\t\t\t\t\t\tif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar count = ( position.array.length - prevLength ) / position.stride;\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// fill missing uv coordinates\n\n\t\t\t\t\t\t\t\t\t\t\t\tuv.array.push( 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );\n\t\t\t\t\t\t\t\t\t\tnormal.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, color.array );\n\t\t\t\t\t\t\t\t\t\tcolor.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv2.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Semantic \"%s\" not handled in geometry build process.', key );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );\n\t\t\t\t\t\t\tnormal.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array );\n\t\t\t\t\t\t\tcolor.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );\n\t\t\t\t\t\t\tuv.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );\n\t\t\t\t\t\t\tuv2.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tif ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );\n\t\t\tif ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );\n\t\t\tif ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );\n\t\t\tif ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );\n\t\t\tif ( uv2.array.length > 0 ) geometry.setAttribute( 'uv2', new Float32BufferAttribute( uv2.array, uv2.stride ) );\n\n\t\t\tif ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );\n\t\t\tif ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );\n\n\t\t\tbuild.data = geometry;\n\t\t\tbuild.type = primitives[ 0 ].type;\n\t\t\tbuild.materialKeys = materialKeys;\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryData( primitive, source, offset, array ) {\n\n\t\t\tvar indices = primitive.p;\n\t\t\tvar stride = primitive.stride;\n\t\t\tvar vcount = primitive.vcount;\n\n\t\t\tfunction pushVector( i ) {\n\n\t\t\t\tvar index = indices[ i + offset ] * sourceStride;\n\t\t\t\tvar length = index + sourceStride;\n\n\t\t\t\tfor ( ; index < length; index ++ ) {\n\n\t\t\t\t\tarray.push( sourceArray[ index ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar sourceArray = source.array;\n\t\t\tvar sourceStride = source.stride;\n\n\t\t\tif ( primitive.vcount !== undefined ) {\n\n\t\t\t\tvar index = 0;\n\n\t\t\t\tfor ( var i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar count = vcount[ i ];\n\n\t\t\t\t\tif ( count === 4 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\t\t\t\t\t\tvar d = index + stride * 3;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( d );\n\t\t\t\t\t\tpushVector( b ); pushVector( c ); pushVector( d );\n\n\t\t\t\t\t} else if ( count === 3 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t} else if ( count > 4 ) {\n\n\t\t\t\t\t\tfor ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\t\tvar b = index + stride * k;\n\t\t\t\t\t\t\tvar c = index + stride * ( k + 1 );\n\n\t\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += stride * count;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += stride ) {\n\n\t\t\t\t\tpushVector( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getGeometry( id ) {\n\n\t\t\treturn getBuild( library.geometries[ id ], buildGeometry );\n\n\t\t}\n\n\t\t// kinematics\n\n\t\tfunction parseKinematicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tjoints: {},\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparseKinematicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildKinematicsModel( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsModel( id ) {\n\n\t\t\treturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );\n\n\t\t}\n\n\t\tfunction parseKinematicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'joint':\n\t\t\t\t\t\tdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseKinematicsJoint( xml ) {\n\n\t\t\tvar data;\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\tdata = parseKinematicsJointParameter( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsJointParameter( xml, data ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\taxis: new Vector3(),\n\t\t\t\tlimits: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 0\n\t\t\t\t},\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tstatic: false,\n\t\t\t\tzeroPosition: 0,\n\t\t\t\tmiddlePosition: 0\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.axis.fromArray( array );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'limits':\n\t\t\t\t\t\tvar max = child.getElementsByTagName( 'max' )[ 0 ];\n\t\t\t\t\t\tvar min = child.getElementsByTagName( 'min' )[ 0 ];\n\n\t\t\t\t\t\tdata.limits.max = parseFloat( max.textContent );\n\t\t\t\t\t\tdata.limits.min = parseFloat( min.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// if min is equal to or greater than max, consider the joint static\n\n\t\t\tif ( data.limits.min >= data.limits.max ) {\n\n\t\t\t\tdata.static = true;\n\n\t\t\t}\n\n\t\t\t// calculate middle position\n\n\t\t\tdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsLink( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tattachments: [],\n\t\t\t\ttransforms: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'attachment_full':\n\t\t\t\t\t\tdata.attachments.push( parseKinematicsAttachment( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsAttachment( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),\n\t\t\t\ttransforms: [],\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsTransform( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttype: xml.nodeName\n\t\t\t};\n\n\t\t\tvar array = parseFloats( xml.textContent );\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tdata.obj = new Matrix4();\n\t\t\t\t\tdata.obj.fromArray( array ).transpose();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tdata.angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// physics\n\n\t\tfunction parsePhysicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\trigidBodies: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'rigid_body':\n\t\t\t\t\t\tdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};\n\t\t\t\t\t\tparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parsePhysicsRigidBody( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparsePhysicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parsePhysicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'inertia':\n\t\t\t\t\t\tdata.inertia = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'mass':\n\t\t\t\t\t\tdata.mass = parseFloats( child.textContent )[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// scene\n\n\t\tfunction parseKinematicsScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tbindJointAxis: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_joint_axis':\n\t\t\t\t\t\tdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;\n\n\t\t}\n\n\t\tfunction parseKinematicsBindJointAxis( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttarget: xml.getAttribute( 'target' ).split( '/' ).pop()\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar param = child.getElementsByTagName( 'param' )[ 0 ];\n\t\t\t\t\t\tdata.axis = param.textContent;\n\t\t\t\t\t\tvar tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];\n\t\t\t\t\t\tdata.jointIndex = tmpJointIndex.substr( 0, tmpJointIndex.length - 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildKinematicsScene( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsScene( id ) {\n\n\t\t\treturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );\n\n\t\t}\n\n\t\tfunction setupKinematics() {\n\n\t\t\tvar kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];\n\t\t\tvar kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];\n\t\t\tvar visualSceneId = Object.keys( library.visualScenes )[ 0 ];\n\n\t\t\tif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;\n\n\t\t\tvar kinematicsModel = getKinematicsModel( kinematicsModelId );\n\t\t\tvar kinematicsScene = getKinematicsScene( kinematicsSceneId );\n\t\t\tvar visualScene = getVisualScene( visualSceneId );\n\n\t\t\tvar bindJointAxis = kinematicsScene.bindJointAxis;\n\t\t\tvar jointMap = {};\n\n\t\t\tfor ( var i = 0, l = bindJointAxis.length; i < l; i ++ ) {\n\n\t\t\t\tvar axis = bindJointAxis[ i ];\n\n\t\t\t\t// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'\n\n\t\t\t\tvar targetElement = collada.querySelector( '[sid=\"' + axis.target + '\"]' );\n\n\t\t\t\tif ( targetElement ) {\n\n\t\t\t\t\t// get the parent of the transform element\n\n\t\t\t\t\tvar parentVisualElement = targetElement.parentElement;\n\n\t\t\t\t\t// connect the joint of the kinematics model with the element in the visual scene\n\n\t\t\t\t\tconnect( axis.jointIndex, parentVisualElement );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction connect( jointIndex, visualElement ) {\n\n\t\t\t\tvar visualElementName = visualElement.getAttribute( 'name' );\n\t\t\t\tvar joint = kinematicsModel.joints[ jointIndex ];\n\n\t\t\t\tvisualScene.traverse( function ( object ) {\n\n\t\t\t\t\tif ( object.name === visualElementName ) {\n\n\t\t\t\t\t\tjointMap[ jointIndex ] = {\n\t\t\t\t\t\t\tobject: object,\n\t\t\t\t\t\t\ttransforms: buildTransformList( visualElement ),\n\t\t\t\t\t\t\tjoint: joint,\n\t\t\t\t\t\t\tposition: joint.zeroPosition\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar m0 = new Matrix4();\n\n\t\t\tkinematics = {\n\n\t\t\t\tjoints: kinematicsModel && kinematicsModel.joints,\n\n\t\t\t\tgetJointValue: function ( jointIndex ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\treturn jointData.position;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\\'t exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetJointValue: function ( jointIndex, value ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\tvar joint = jointData.joint;\n\n\t\t\t\t\t\tif ( value > joint.limits.max || value < joint.limits.min ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );\n\n\t\t\t\t\t\t} else if ( joint.static ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar object = jointData.object;\n\t\t\t\t\t\t\tvar axis = joint.axis;\n\t\t\t\t\t\t\tvar transforms = jointData.transforms;\n\n\t\t\t\t\t\t\tmatrix.identity();\n\n\t\t\t\t\t\t\t// each update, we have to apply all transforms in the correct order\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < transforms.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar transform = transforms[ i ];\n\n\t\t\t\t\t\t\t\t// if there is a connection of the transform node with a joint, apply the joint value\n\n\t\t\t\t\t\t\t\tif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {\n\n\t\t\t\t\t\t\t\t\tswitch ( joint.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tswitch ( transform.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.scale( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tobject.matrix.copy( matrix );\n\t\t\t\t\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t\t\t\tjointMap[ jointIndex ].position = value;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction buildTransformList( node ) {\n\n\t\t\tvar transforms = [];\n\n\t\t\tvar xml = collada.querySelector( '[id=\"' + node.id + '\"]' );\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar matrix = new Matrix4().fromArray( array ).transpose();\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: matrix\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector,\n\t\t\t\t\t\t\tangle: angle\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transforms;\n\n\t\t}\n\n\t\t// nodes\n\n\t\tfunction prepareNodes( xml ) {\n\n\t\t\tvar elements = xml.getElementsByTagName( 'node' );\n\n\t\t\t// ensure all node elements have id attributes\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tvar element = elements[ i ];\n\n\t\t\t\tif ( element.hasAttribute( 'id' ) === false ) {\n\n\t\t\t\t\telement.setAttribute( 'id', generateId() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar matrix = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\tfunction parseNode( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\ttype: xml.getAttribute( 'type' ),\n\t\t\t\tid: xml.getAttribute( 'id' ),\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tmatrix: new Matrix4(),\n\t\t\t\tnodes: [],\n\t\t\t\tinstanceCameras: [],\n\t\t\t\tinstanceControllers: [],\n\t\t\t\tinstanceLights: [],\n\t\t\t\tinstanceGeometries: [],\n\t\t\t\tinstanceNodes: [],\n\t\t\t\ttransforms: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'node':\n\t\t\t\t\t\tdata.nodes.push( child.getAttribute( 'id' ) );\n\t\t\t\t\t\tparseNode( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_camera':\n\t\t\t\t\t\tdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_controller':\n\t\t\t\t\t\tdata.instanceControllers.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_light':\n\t\t\t\t\t\tdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_geometry':\n\t\t\t\t\t\tdata.instanceGeometries.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_node':\n\t\t\t\t\t\tdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.fromArray( array ).transpose() );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvector.fromArray( array );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.scale( vector.fromArray( array ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasNode( data.id ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );\n\n\t\t\t} else {\n\n\t\t\t\tlibrary.nodes[ data.id ] = data;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseNodeInstance( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tid: parseId( xml.getAttribute( 'url' ) ),\n\t\t\t\tmaterials: {},\n\t\t\t\tskeletons: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_material':\n\t\t\t\t\t\tvar instances = child.getElementsByTagName( 'instance_material' );\n\n\t\t\t\t\t\tfor ( var j = 0; j < instances.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar instance = instances[ j ];\n\t\t\t\t\t\t\tvar symbol = instance.getAttribute( 'symbol' );\n\t\t\t\t\t\t\tvar target = instance.getAttribute( 'target' );\n\n\t\t\t\t\t\t\tdata.materials[ symbol ] = parseId( target );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skeleton':\n\t\t\t\t\t\tdata.skeletons.push( parseId( child.textContent ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildSkeleton( skeletons, joints ) {\n\n\t\t\tvar boneData = [];\n\t\t\tvar sortedBoneData = [];\n\n\t\t\tvar i, j, data;\n\n\t\t\t// a skeleton can have multiple root bones. collada expresses this\n\t\t\t// situtation with multiple \"skeleton\" tags per controller instance\n\n\t\t\tfor ( i = 0; i < skeletons.length; i ++ ) {\n\n\t\t\t\tvar skeleton = skeletons[ i ];\n\n\t\t\t\tvar root;\n\n\t\t\t\tif ( hasNode( skeleton ) ) {\n\n\t\t\t\t\troot = getNode( skeleton );\n\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t} else if ( hasVisualScene( skeleton ) ) {\n\n\t\t\t\t\t// handle case where the skeleton refers to the visual scene (#13335)\n\n\t\t\t\t\tvar visualScene = library.visualScenes[ skeleton ];\n\t\t\t\t\tvar children = visualScene.children;\n\n\t\t\t\t\tfor ( var j = 0; j < children.length; j ++ ) {\n\n\t\t\t\t\t\tvar child = children[ j ];\n\n\t\t\t\t\t\tif ( child.type === 'JOINT' ) {\n\n\t\t\t\t\t\t\tvar root = getNode( child.id );\n\t\t\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// sort bone data (the order is defined in the corresponding controller)\n\n\t\t\tfor ( i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < boneData.length; j ++ ) {\n\n\t\t\t\t\tdata = boneData[ j ];\n\n\t\t\t\t\tif ( data.bone.name === joints[ i ].name ) {\n\n\t\t\t\t\t\tsortedBoneData[ i ] = data;\n\t\t\t\t\t\tdata.processed = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add unprocessed bone data at the end of the list\n\n\t\t\tfor ( i = 0; i < boneData.length; i ++ ) {\n\n\t\t\t\tdata = boneData[ i ];\n\n\t\t\t\tif ( data.processed === false ) {\n\n\t\t\t\t\tsortedBoneData.push( data );\n\t\t\t\t\tdata.processed = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup arrays for skeleton creation\n\n\t\t\tvar bones = [];\n\t\t\tvar boneInverses = [];\n\n\t\t\tfor ( i = 0; i < sortedBoneData.length; i ++ ) {\n\n\t\t\t\tdata = sortedBoneData[ i ];\n\n\t\t\t\tbones.push( data.bone );\n\t\t\t\tboneInverses.push( data.boneInverse );\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t}\n\n\t\tfunction buildBoneHierarchy( root, joints, boneData ) {\n\n\t\t\t// setup bone data from visual scene\n\n\t\t\troot.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isBone === true ) {\n\n\t\t\t\t\tvar boneInverse;\n\n\t\t\t\t\t// retrieve the boneInverse from the controller data\n\n\t\t\t\t\tfor ( var i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\t\t\tvar joint = joints[ i ];\n\n\t\t\t\t\t\tif ( joint.name === object.name ) {\n\n\t\t\t\t\t\t\tboneInverse = joint.boneInverse;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( boneInverse === undefined ) {\n\n\t\t\t\t\t\t// Unfortunately, there can be joints in the visual scene that are not part of the\n\t\t\t\t\t\t// corresponding controller. In this case, we have to create a dummy boneInverse matrix\n\t\t\t\t\t\t// for the respective bone. This bone won't affect any vertices, because there are no skin indices\n\t\t\t\t\t\t// and weights defined for it. But we still have to add the bone to the sorted bone list in order to\n\t\t\t\t\t\t// ensure a correct animation of the model.\n\n\t\t\t\t\t\tboneInverse = new Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction buildNode( data ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tvar matrix = data.matrix;\n\t\t\tvar nodes = data.nodes;\n\t\t\tvar type = data.type;\n\t\t\tvar instanceCameras = data.instanceCameras;\n\t\t\tvar instanceControllers = data.instanceControllers;\n\t\t\tvar instanceLights = data.instanceLights;\n\t\t\tvar instanceGeometries = data.instanceGeometries;\n\t\t\tvar instanceNodes = data.instanceNodes;\n\n\t\t\t// nodes\n\n\t\t\tfor ( var i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( nodes[ i ] ) );\n\n\t\t\t}\n\n\t\t\t// instance cameras\n\n\t\t\tfor ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceCamera = getCamera( instanceCameras[ i ] );\n\n\t\t\t\tif ( instanceCamera !== null ) {\n\n\t\t\t\t\tobjects.push( instanceCamera.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance controllers\n\n\t\t\tfor ( var i = 0, l = instanceControllers.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceControllers[ i ];\n\t\t\t\tvar controller = getController( instance.id );\n\t\t\t\tvar geometries = getGeometry( controller.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tvar skeletons = instance.skeletons;\n\t\t\t\tvar joints = controller.skin.joints;\n\n\t\t\t\tvar skeleton = buildSkeleton( skeletons, joints );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = newObjects[ j ];\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.bind( skeleton, controller.skin.bindMatrix );\n\t\t\t\t\t\tobject.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance lights\n\n\t\t\tfor ( var i = 0, l = instanceLights.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceLight = getLight( instanceLights[ i ] );\n\n\t\t\t\tif ( instanceLight !== null ) {\n\n\t\t\t\t\tobjects.push( instanceLight.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance geometries\n\n\t\t\tfor ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceGeometries[ i ];\n\n\t\t\t\t// a single geometry instance in collada can lead to multiple object3Ds.\n\t\t\t\t// this is the case when primitives are combined like triangles and lines\n\n\t\t\t\tvar geometries = getGeometry( instance.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tobjects.push( newObjects[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance nodes\n\n\t\t\tfor ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( instanceNodes[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tvar object;\n\n\t\t\tif ( nodes.length === 0 && objects.length === 1 ) {\n\n\t\t\t\tobject = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tobject = ( type === 'JOINT' ) ? new Bone() : new Group();\n\n\t\t\t\tfor ( var i = 0; i < objects.length; i ++ ) {\n\n\t\t\t\t\tobject.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.name = ( type === 'JOINT' ) ? data.sid : data.name;\n\t\t\tobject.matrix.copy( matrix );\n\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tvar fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );\n\n\t\tfunction resolveMaterialBinding( keys, instanceMaterials ) {\n\n\t\t\tvar materials = [];\n\n\t\t\tfor ( var i = 0, l = keys.length; i < l; i ++ ) {\n\n\t\t\t\tvar id = instanceMaterials[ keys[ i ] ];\n\n\t\t\t\tif ( id === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );\n\t\t\t\t\tmaterials.push( fallbackMaterial );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials.push( getMaterial( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t}\n\n\t\tfunction buildObjects( geometries, instanceMaterials ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tfor ( var type in geometries ) {\n\n\t\t\t\tvar geometry = geometries[ type ];\n\n\t\t\t\tvar materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );\n\n\t\t\t\t// handle case if no materials are defined\n\n\t\t\t\tif ( materials.length === 0 ) {\n\n\t\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\t\tmaterials.push( new LineBasicMaterial() );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials.push( new MeshPhongMaterial() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// regard skinning\n\n\t\t\t\tvar skinning = ( geometry.data.attributes.skinIndex !== undefined );\n\n\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tmaterials[ i ].skinning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// choose between a single or multi materials (material array)\n\n\t\t\t\tvar material = ( materials.length === 1 ) ? materials[ 0 ] : materials;\n\n\t\t\t\t// now create a specific 3D object\n\n\t\t\t\tvar object;\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\t\tobject = new LineSegments( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tobject = new Line( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry.data, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry.data, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tobjects.push( object );\n\n\t\t\t}\n\n\t\t\treturn objects;\n\n\t\t}\n\n\t\tfunction hasNode( id ) {\n\n\t\t\treturn library.nodes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getNode( id ) {\n\n\t\t\treturn getBuild( library.nodes[ id ], buildNode );\n\n\t\t}\n\n\t\t// visual scenes\n\n\t\tfunction parseVisualScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tprepareNodes( xml );\n\n\t\t\tvar elements = getElementsByTagName( xml, 'node' );\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tdata.children.push( parseNode( elements[ i ] ) );\n\n\t\t\t}\n\n\t\t\tlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildVisualScene( data ) {\n\n\t\t\tvar group = new Group();\n\t\t\tgroup.name = data.name;\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar child = children[ i ];\n\n\t\t\t\tgroup.add( getNode( child.id ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction hasVisualScene( id ) {\n\n\t\t\treturn library.visualScenes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getVisualScene( id ) {\n\n\t\t\treturn getBuild( library.visualScenes[ id ], buildVisualScene );\n\n\t\t}\n\n\t\t// scenes\n\n\t\tfunction parseScene( xml ) {\n\n\t\t\tvar instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];\n\t\t\treturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );\n\n\t\t}\n\n\t\tfunction setupAnimations() {\n\n\t\t\tvar clips = library.clips;\n\n\t\t\tif ( isEmpty( clips ) === true ) {\n\n\t\t\t\tif ( isEmpty( library.animations ) === false ) {\n\n\t\t\t\t\t// if there are animations but no clips, we create a default clip for playback\n\n\t\t\t\t\tvar tracks = [];\n\n\t\t\t\t\tfor ( var id in library.animations ) {\n\n\t\t\t\t\t\tvar animationTracks = getAnimation( id );\n\n\t\t\t\t\t\tfor ( var i = 0, l = animationTracks.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\ttracks.push( animationTracks[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimations.push( new AnimationClip( 'default', - 1, tracks ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var id in clips ) {\n\n\t\t\t\t\tanimations.push( getAnimationClip( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// convert the parser error element into text with each child elements text\n\t\t// separated by new lines.\n\n\t\tfunction parserErrorToText( parserError ) {\n\n\t\t\tvar result = '';\n\t\t\tvar stack = [ parserError ];\n\n\t\t\twhile ( stack.length ) {\n\n\t\t\t\tvar node = stack.shift();\n\n\t\t\t\tif ( node.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t\t\tresult += node.textContent;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += '\\n';\n\t\t\t\t\tstack.push.apply( stack, node.childNodes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result.trim();\n\n\t\t}\n\n\t\tif ( text.length === 0 ) {\n\n\t\t\treturn { scene: new Scene() };\n\n\t\t}\n\n\t\tvar xml = new DOMParser().parseFromString( text, 'application/xml' );\n\n\t\tvar collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];\n\n\t\tvar parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];\n\t\tif ( parserError !== undefined ) {\n\n\t\t\t// Chrome will return parser error with a div in it\n\n\t\t\tvar errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];\n\t\t\tvar errorText;\n\n\t\t\tif ( errorElement ) {\n\n\t\t\t\terrorText = errorElement.textContent;\n\n\t\t\t} else {\n\n\t\t\t\terrorText = parserErrorToText( parserError );\n\n\t\t\t}\n\n\t\t\tconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\\n', errorText );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// metadata\n\n\t\tvar version = collada.getAttribute( 'version' );\n\t\tconsole.log( 'THREE.ColladaLoader: File version', version );\n\n\t\tvar asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );\n\t\tvar textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\tvar tgaLoader;\n\n\t\tif ( TGALoader ) {\n\n\t\t\ttgaLoader = new TGALoader( this.manager );\n\t\t\ttgaLoader.setPath( this.resourcePath || path );\n\n\t\t}\n\n\t\t//\n\n\t\tvar animations = [];\n\t\tvar kinematics = {};\n\t\tvar count = 0;\n\n\t\t//\n\n\t\tvar library = {\n\t\t\tanimations: {},\n\t\t\tclips: {},\n\t\t\tcontrollers: {},\n\t\t\timages: {},\n\t\t\teffects: {},\n\t\t\tmaterials: {},\n\t\t\tcameras: {},\n\t\t\tlights: {},\n\t\t\tgeometries: {},\n\t\t\tnodes: {},\n\t\t\tvisualScenes: {},\n\t\t\tkinematicsModels: {},\n\t\t\tphysicsModels: {},\n\t\t\tkinematicsScenes: {}\n\t\t};\n\n\t\tparseLibrary( collada, 'library_animations', 'animation', parseAnimation );\n\t\tparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );\n\t\tparseLibrary( collada, 'library_controllers', 'controller', parseController );\n\t\tparseLibrary( collada, 'library_images', 'image', parseImage );\n\t\tparseLibrary( collada, 'library_effects', 'effect', parseEffect );\n\t\tparseLibrary( collada, 'library_materials', 'material', parseMaterial );\n\t\tparseLibrary( collada, 'library_cameras', 'camera', parseCamera );\n\t\tparseLibrary( collada, 'library_lights', 'light', parseLight );\n\t\tparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );\n\t\tparseLibrary( collada, 'library_nodes', 'node', parseNode );\n\t\tparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );\n\t\tparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );\n\t\tparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );\n\t\tparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );\n\n\t\tbuildLibrary( library.animations, buildAnimation );\n\t\tbuildLibrary( library.clips, buildAnimationClip );\n\t\tbuildLibrary( library.controllers, buildController );\n\t\tbuildLibrary( library.images, buildImage );\n\t\tbuildLibrary( library.effects, buildEffect );\n\t\tbuildLibrary( library.materials, buildMaterial );\n\t\tbuildLibrary( library.cameras, buildCamera );\n\t\tbuildLibrary( library.lights, buildLight );\n\t\tbuildLibrary( library.geometries, buildGeometry );\n\t\tbuildLibrary( library.visualScenes, buildVisualScene );\n\n\t\tsetupAnimations();\n\t\tsetupKinematics();\n\n\t\tvar scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );\n\n\t\tif ( asset.upAxis === 'Z_UP' ) {\n\n\t\t\tscene.quaternion.setFromEuler( new Euler( - Math.PI / 2, 0, 0 ) );\n\n\t\t}\n\n\t\tscene.scale.multiplyScalar( asset.unit );\n\n\t\treturn {\n\t\t\tanimations: animations,\n\t\t\tkinematics: kinematics,\n\t\t\tlibrary: library,\n\t\t\tscene: scene\n\t\t};\n\n\t}\n\n} );\n\nexport { ColladaLoader };\n","import { Object3D, Quaternion } from 'three';\r\n\r\nclass URDFCollider extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFCollider = true;\r\n this.type = 'URDFCollider';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFVisual extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFVisual = true;\r\n this.type = 'URDFVisual';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFLink extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFLink = true;\r\n this.type = 'URDFLink';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFJoint extends Object3D {\r\n\r\n get jointType() {\r\n\r\n return this._jointType;\r\n\r\n }\r\n\r\n set jointType(v) {\r\n\r\n if (this.jointType === v) return;\r\n this._jointType = v;\r\n\r\n switch (v) {\r\n\r\n case 'fixed':\r\n case 'continuous':\r\n case 'revolute':\r\n case 'prismatic':\r\n this.jointValue = new Array(1).fill(0);\r\n break;\r\n\r\n case 'planar':\r\n this.jointValue = new Array(2).fill(0);\r\n break;\r\n\r\n case 'floating':\r\n this.jointValue = new Array(6).fill(0);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n get angle() {\r\n\r\n return this.jointValue[0];\r\n\r\n }\r\n\r\n constructor(...args) {\r\n super(...args);\r\n\r\n this.isURDFJoint = true;\r\n this.type = 'URDFJoint';\r\n\r\n this.urdfNode = null;\r\n this.jointValue = null;\r\n this.jointType = 'fixed';\r\n this.axis = null;\r\n this.limit = { lower: 0, upper: 0 };\r\n this.ignoreLimits = false;\r\n\r\n this.origPosition = null;\r\n this.origQuaternion = null;\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfNode = source.urdfNode;\r\n this.jointType = source.jointType;\r\n this.axis = source.axis ? source.axis.clone() : null;\r\n this.limit.lower = source.limit.lower;\r\n this.limit.upper = source.limit.upper;\r\n this.ignoreLimits = false;\r\n\r\n this.jointValue = [...source.jointValue];\r\n\r\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\r\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\r\n\r\n return this;\r\n }\r\n\r\n /* Public Functions */\r\n setJointValue(...values) {\r\n\r\n values = values.map(v => parseFloat(v));\r\n\r\n if (!this.origPosition || !this.origQuaternion) {\r\n\r\n this.origPosition = this.position.clone();\r\n this.origQuaternion = this.quaternion.clone();\r\n\r\n }\r\n\r\n switch (this.jointType) {\r\n\r\n case 'fixed': {\r\n\r\n return false;\r\n\r\n }\r\n case 'continuous':\r\n case 'revolute': {\r\n\r\n let angle = values[0];\r\n if (angle == null) return false;\r\n if (angle === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits && this.jointType === 'revolute') {\r\n\r\n angle = Math.min(this.limit.upper, angle);\r\n angle = Math.max(this.limit.lower, angle);\r\n\r\n }\r\n\r\n // FromAxisAngle seems to rotate the opposite of the\r\n // expected angle for URDF, so negate it here\r\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\r\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\r\n\r\n if (this.jointValue[0] !== angle) {\r\n\r\n this.jointValue[0] = angle;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'prismatic': {\r\n\r\n let pos = values[0];\r\n if (pos == null) return false;\r\n if (pos === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits) {\r\n\r\n pos = Math.min(this.limit.upper, pos);\r\n pos = Math.max(this.limit.lower, pos);\r\n\r\n }\r\n\r\n this.position.copy(this.origPosition);\r\n this.position.addScaledVector(this.axis, pos);\r\n\r\n if (this.jointValue[0] !== pos) {\r\n\r\n this.jointValue[0] = pos;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'floating':\r\n case 'planar':\r\n // TODO: Support these joint types\r\n console.warn(`'${ this.jointType }' joint not yet supported`);\r\n\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFRobot extends URDFLink {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFRobot = true;\r\n this.urdfNode = null;\r\n\r\n this.urdfRobotNode = null;\r\n this.robotName = null;\r\n\r\n this.links = null;\r\n this.joints = null;\r\n this.colliders = null;\r\n this.visual = null;\r\n this.frames = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfRobotNode = source.urdfRobotNode;\r\n this.robotName = source.robotName;\r\n\r\n this.links = {};\r\n this.joints = {};\r\n this.colliders = {};\r\n this.visual = {};\r\n\r\n this.traverse(c => {\r\n\r\n if (c.isURDFJoint && c.name in source.joints) {\r\n\r\n this.joints[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFLink && c.name in source.links) {\r\n\r\n this.links[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFCollider && c.name in source.colliders) {\r\n\r\n this.colliders[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFVisual && c.name in source.visual) {\r\n\r\n this.visual[c.name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n this.frames = {\r\n ...this.colliders,\r\n ...this.visual,\r\n ...this.links,\r\n ...this.joints,\r\n };\r\n\r\n return this;\r\n\r\n }\r\n\r\n getFrame(name) {\r\n\r\n return this.frames[name];\r\n\r\n }\r\n\r\n setJointValue(jointName, ...angle) {\r\n\r\n const joint = this.joints[jointName];\r\n if (joint) {\r\n\r\n return joint.setJointValue(...angle);\r\n\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n let didChange = false;\r\n for (const name in values) {\r\n\r\n const value = values[name];\r\n if (Array.isArray(value)) {\r\n\r\n didChange = didChange || this.setJointValue(name, ...value);\r\n\r\n } else {\r\n\r\n didChange = didChange || this.setJointValue(name, value);\r\n\r\n }\r\n\r\n }\r\n\r\n return didChange;\r\n\r\n }\r\n\r\n}\r\n\r\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\r\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = null;\r\n\r\n }\r\n\r\n /* Public API */\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n if (onProgress) {\r\n onProgress(null);\r\n }\r\n return res.text();\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n onError(e);\r\n } else {\r\n console.error('URDFLoader: Error loading file.', e);\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import {\r\n WebGLRenderer,\r\n PerspectiveCamera,\r\n Scene,\r\n Mesh,\r\n PlaneBufferGeometry,\r\n ShadowMaterial,\r\n DirectionalLight,\r\n PCFSoftShadowMap,\r\n sRGBEncoding,\r\n Color,\r\n AmbientLight,\r\n Box3,\r\n LoadingManager,\r\n MathUtils,\r\n Group,\r\n} from 'three';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\r\nimport { VRButton } from 'three/examples/jsm/webxr/VRButton.js';\r\nimport URDFLoader from '../../src/URDFLoader.js';\r\n\r\nlet scene, camera, renderer, robot, controls, cameraContainer, vrCamera;\r\n\r\ninit();\r\n\r\nfunction init() {\r\n\r\n scene = new Scene();\r\n scene.background = new Color(0xffab40);\r\n\r\n cameraContainer = new Group();\r\n scene.add(cameraContainer);\r\n\r\n vrCamera = new PerspectiveCamera();\r\n cameraContainer.add(vrCamera);\r\n\r\n camera = new PerspectiveCamera();\r\n camera.position.set(10, 10, 10);\r\n\r\n renderer = new WebGLRenderer({ antialias: true });\r\n renderer.outputEncoding = sRGBEncoding;\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = PCFSoftShadowMap;\r\n document.body.appendChild(renderer.domElement);\r\n\r\n // vr\r\n renderer.xr.enabled = true;\r\n renderer.setAnimationLoop(render);\r\n document.body.appendChild(VRButton.createButton(renderer));\r\n\r\n const directionalLight = new DirectionalLight(0xffffff, 1.0);\r\n directionalLight.castShadow = true;\r\n directionalLight.shadow.mapSize.setScalar(1024);\r\n directionalLight.position.set(5, 30, 5);\r\n scene.add(directionalLight);\r\n\r\n const ambientLight = new AmbientLight(0xffb74d, 0.5);\r\n scene.add(ambientLight);\r\n\r\n const ground = new Mesh(new PlaneBufferGeometry(), new ShadowMaterial({ opacity: 0.25 }));\r\n ground.material.color.set(0xe65100).convertSRGBToLinear();\r\n ground.rotation.x = -Math.PI / 2;\r\n ground.scale.setScalar(30);\r\n ground.receiveShadow = true;\r\n scene.add(ground);\r\n\r\n controls = new OrbitControls(camera, renderer.domElement);\r\n controls.enablePan = false;\r\n controls.minDistance = 1e-2;\r\n\r\n const manager = new LoadingManager();\r\n const loader = new URDFLoader(manager);\r\n loader.loadMeshCb = function(path, manager, onComplete) {\r\n const ext = path.split(/\\./g).pop().toLowerCase();\r\n\r\n switch (ext) {\r\n\r\n case 'gltf':\r\n new GLTFLoader(manager).load(\r\n path,\r\n result => onComplete(result.scene),\r\n null,\r\n err => onComplete(null, err),\r\n );\r\n break;\r\n default:\r\n loader.defaultMeshLoader(path, manager, onComplete);\r\n\r\n }\r\n\r\n };\r\n loader.load('../../urdf/T12/urdf/T12_flipped.URDF', result => {\r\n robot = result;\r\n });\r\n\r\n manager.onLoad = function() {\r\n\r\n robot.rotation.x = Math.PI / 2;\r\n robot.traverse(c => {\r\n c.castShadow = true;\r\n });\r\n for (let i = 1; i <= 6; i++) {\r\n\r\n robot.joints[`HP${ i }`].setJointValue(MathUtils.degToRad(30));\r\n robot.joints[`KP${ i }`].setJointValue(MathUtils.degToRad(120));\r\n robot.joints[`AP${ i }`].setJointValue(MathUtils.degToRad(-60));\r\n\r\n }\r\n robot.updateMatrixWorld(true);\r\n\r\n const bb = new Box3();\r\n bb.setFromObject(robot);\r\n\r\n robot.position.y -= bb.min.y;\r\n\r\n scene.add(robot);\r\n\r\n };\r\n\r\n onResize();\r\n window.addEventListener('resize', onResize);\r\n\r\n}\r\n\r\nfunction onResize() {\r\n\r\n renderer.setSize(window.innerWidth, window.innerHeight);\r\n renderer.setPixelRatio(window.devicePixelRatio);\r\n\r\n camera.aspect = window.innerWidth / window.innerHeight;\r\n camera.updateProjectionMatrix();\r\n\r\n vrCamera.aspect = window.innerWidth / window.innerHeight;\r\n vrCamera.updateProjectionMatrix();\r\n\r\n}\r\n\r\nfunction render() {\r\n\r\n const vrEnabled = Boolean(renderer.xr.getSession());\r\n cameraContainer.position.copy(camera.position);\r\n renderer.render(scene, vrEnabled ? vrCamera : camera);\r\n\r\n}\r\n"],"names":["Node","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry"],"mappings":"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AAC,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,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,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;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,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;CAC3D,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;CAC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EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,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;CAC/D,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;AACjE;CACA,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG,CAAC;AACnH;CACA,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D;CACA,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF;CACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACzB;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,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,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,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG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A,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,E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"} \ No newline at end of file +{"version":3,"file":"simple.js","sources":["../../node_modules/three/build/three.module.js","../../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../node_modules/three/examples/jsm/controls/OrbitControls.js","../../node_modules/three/examples/jsm/webxr/VRButton.js","../../node_modules/three/examples/jsm/loaders/STLLoader.js","../../node_modules/three/examples/jsm/loaders/TGALoader.js","../../node_modules/three/examples/jsm/loaders/ColladaLoader.js","../../src/URDFClasses.js","../../src/URDFLoader.js","../src/simple.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '119';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\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 );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\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\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\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)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\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.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = RGBAFormat; // see #18859\n\tthis.texture.encoding = texture.encoding;\n\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\tthis.texture.minFilter = texture.minFilter;\n\tthis.texture.magFilter = texture.magFilter;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: /* glsl */`\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t}\n\t\t`,\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t`\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\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\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\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\";\n\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\";\n\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\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\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}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\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\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\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\";\n\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\";\n\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 vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 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#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\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)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\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)\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\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\";\n\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\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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;\";\n\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\";\n\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\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\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\";\n\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\";\n\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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\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;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\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\";\n\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\";\n\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\";\n\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}\";\n\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\";\n\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\";\n\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\";\n\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\";\n\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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\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; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\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\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\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\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\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\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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 *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\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}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\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' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn !! extension;\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( ! this.has( name ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\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\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\t'out highp vec4 pc_fragColor;',\n\t\t\t'#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\", \"transmissionMap\"\n\t];\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\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,\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,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat, stencilBuffer: false };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\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.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\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.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = [];\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t\tif ( window.XRHand ) {\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tlet joint = new Group();\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\tthis._hand.joints.push( joint );\n\t\t\t\t\t// ??\n\t\t\t\t\tthis._hand.add( joint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\n\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tlet jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\n\n\t\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t\t\t// Custom events\n\n\t\t\t\t\t\t// Check pinch\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchend\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchstart\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tvar maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material, parameters );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\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\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\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 );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\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 );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\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\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\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\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = ( tension !== undefined ) ? tension : 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\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 );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\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\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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 ] );\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\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 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\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.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\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.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\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, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, 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, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, 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, LightShadow, 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, SpotLightShadow, 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 };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\t\tthis.ktx2Loader = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\n\n\t\t\tthis.ktx2Loader = ktx2Loader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager,\n\t\t\t\tktx2Loader: this.ktx2Loader\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Transmission Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n\t */\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * BasisU Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n\t * (draft PR https://github.com/KhronosGroup/glTF/pull/1751)\n\t */\n\tfunction GLTFTextureBasisUExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ this.name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype._markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.lightCache, nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t};\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tvar ref = object.clone();\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tpending.push( func( extensions[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar loader;\n\n\t\tif ( source.uri ) {\n\n\t\t\tloader = options.manager.getHandler( source.uri );\n\n\t\t}\n\n\t\tif ( ! loader ) {\n\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t: this.textureLoader;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\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\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\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\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.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\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.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tvar lightIndex = nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light;\n\n\t\t\t\tpending.push( parser.getDependency( 'light', lightIndex ).then( function ( light ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.lightCache, lightIndex, light );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min < max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.domElement.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\tscope.domElement.addEventListener( 'keydown', onKeyDown, false );\n\n\t// make sure element can receive keys.\n\n\tif ( scope.domElement.tabIndex === - 1 ) {\n\n\t\tscope.domElement.tabIndex = 0;\n\n\t}\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","var VRButton = {\n\n\tcreateButton: function ( renderer, options ) {\n\n\t\tif ( options ) {\n\n\t\t\tconsole.error( 'THREE.VRButton: The \"options\" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.' );\n\n\t\t}\n\n\t\tfunction showEnterVR( /*device*/ ) {\n\n\t\t\tvar currentSession = null;\n\n\t\t\tfunction onSessionStarted( session ) {\n\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\n\n\t\t\t\trenderer.xr.setSession( session );\n\t\t\t\tbutton.textContent = 'EXIT VR';\n\n\t\t\t\tcurrentSession = session;\n\n\t\t\t}\n\n\t\t\tfunction onSessionEnded( /*event*/ ) {\n\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\n\n\t\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\t\tcurrentSession = null;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'pointer';\n\t\t\tbutton.style.left = 'calc(50% - 50px)';\n\t\t\tbutton.style.width = '100px';\n\n\t\t\tbutton.textContent = 'ENTER VR';\n\n\t\t\tbutton.onmouseenter = function () {\n\n\t\t\t\tbutton.style.opacity = '1.0';\n\n\t\t\t};\n\n\t\t\tbutton.onmouseleave = function () {\n\n\t\t\t\tbutton.style.opacity = '0.5';\n\n\t\t\t};\n\n\t\t\tbutton.onclick = function () {\n\n\t\t\t\tif ( currentSession === null ) {\n\n\t\t\t\t\t// WebXR's requestReferenceSpace only works if the corresponding feature\n\t\t\t\t\t// was requested at session creation time. For simplicity, just ask for\n\t\t\t\t\t// the interesting ones as optional features, but be aware that the\n\t\t\t\t\t// requestReferenceSpace call will fail if it turns out to be unavailable.\n\t\t\t\t\t// ('local' is always available for immersive sessions and doesn't need to\n\t\t\t\t\t// be requested separately.)\n\n\t\t\t\t\tvar sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking' ] };\n\t\t\t\t\tnavigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcurrentSession.end();\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction disableButton() {\n\n\t\t\tbutton.style.display = '';\n\n\t\t\tbutton.style.cursor = 'auto';\n\t\t\tbutton.style.left = 'calc(50% - 75px)';\n\t\t\tbutton.style.width = '150px';\n\n\t\t\tbutton.onmouseenter = null;\n\t\t\tbutton.onmouseleave = null;\n\n\t\t\tbutton.onclick = null;\n\n\t\t}\n\n\t\tfunction showWebXRNotFound() {\n\n\t\t\tdisableButton();\n\n\t\t\tbutton.textContent = 'VR NOT SUPPORTED';\n\n\t\t}\n\n\t\tfunction stylizeElement( element ) {\n\n\t\t\telement.style.position = 'absolute';\n\t\t\telement.style.bottom = '20px';\n\t\t\telement.style.padding = '12px 6px';\n\t\t\telement.style.border = '1px solid #fff';\n\t\t\telement.style.borderRadius = '4px';\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\n\t\t\telement.style.color = '#fff';\n\t\t\telement.style.font = 'normal 13px sans-serif';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.opacity = '0.5';\n\t\t\telement.style.outline = 'none';\n\t\t\telement.style.zIndex = '999';\n\n\t\t}\n\n\t\tif ( 'xr' in navigator ) {\n\n\t\t\tvar button = document.createElement( 'button' );\n\t\t\tbutton.id = 'VRButton';\n\t\t\tbutton.style.display = 'none';\n\n\t\t\tstylizeElement( button );\n\n\t\t\tnavigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) {\n\n\t\t\t\tsupported ? showEnterVR() : showWebXRNotFound();\n\n\t\t\t} );\n\n\t\t\treturn button;\n\n\t\t} else {\n\n\t\t\tvar message = document.createElement( 'a' );\n\n\t\t\tif ( window.isSecureContext === false ) {\n\n\t\t\t\tmessage.href = document.location.href.replace( /^http:/, 'https:' );\n\t\t\t\tmessage.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\n\n\t\t\t} else {\n\n\t\t\t\tmessage.href = 'https://immersiveweb.dev/';\n\t\t\t\tmessage.innerHTML = 'WEBXR NOT AVAILABLE';\n\n\t\t\t}\n\n\t\t\tmessage.style.left = 'calc(50% - 90px)';\n\t\t\tmessage.style.width = '180px';\n\t\t\tmessage.style.textDecoration = 'none';\n\n\t\t\tstylizeElement( message );\n\n\t\t\treturn message;\n\n\t\t}\n\n\t}\n\n};\n\nexport { VRButton };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tLoaderUtils,\n\tVector3\n} from \"../../../build/three.module.js\";\n/**\n * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files, with automatic detection of type.\n *\n * The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n * Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n * There is perhaps some question as to how valid it is to always assume little-endian-ness.\n * ASCII decoding assumes file is UTF-8.\n *\n * Usage:\n * var loader = new STLLoader();\n * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) {\n * scene.add( new THREE.Mesh( geometry ) );\n * });\n *\n * For binary STLs geometry might contain colors for vertices. To use it:\n * // use the same code to load STL as above\n * if (geometry.hasColors) {\n * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true });\n * } else { .... }\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For example:\n *\n * var materials = [];\n * var nGeometryGroups = geometry.groups.length;\n *\n * var colorMap = ...; // Some logic to index colors.\n *\n * for (var i = 0; i < nGeometryGroups; i++) {\n *\n *\t\tvar material = new THREE.MeshPhongMaterial({\n *\t\t\tcolor: colorMap[i],\n *\t\t\twireframe: false\n *\t\t});\n *\n * }\n *\n * materials.push(material);\n * var mesh = new THREE.Mesh(geometry, materials);\n */\n\n\nvar STLLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nSTLLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: STLLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tvar expect, face_size, n_faces, reader;\n\t\t\treader = new DataView( data );\n\t\t\tface_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tn_faces = reader.getUint32( 80, true );\n\t\t\texpect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful. So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tvar solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( var off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( var i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tvar reader = new DataView( data );\n\t\t\tvar faces = reader.getUint32( 80, true );\n\n\t\t\tvar r, g, b, hasColors = false, colors;\n\t\t\tvar defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( var index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar dataOffset = 84;\n\t\t\tvar faceLength = 12 * 4 + 2;\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tvar normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tfor ( var face = 0; face < faces; face ++ ) {\n\n\t\t\t\tvar start = dataOffset + face * faceLength;\n\t\t\t\tvar normalX = reader.getFloat32( start, true );\n\t\t\t\tvar normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tvar normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tvar packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tvar vertexstart = start + i * 12;\n\t\t\t\t\tvar componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolors[ componentIdx ] = r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\t\t\tvar patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tvar patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tvar faceCounter = 0;\n\n\t\t\tvar patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tvar patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tvar patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tvar vertices = [];\n\t\t\tvar normals = [];\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar result;\n\n\t\t\tvar groupCount = 0;\n\t\t\tvar startVertex = 0;\n\t\t\tvar endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tvar solid = result[ 0 ];\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tvar vertexCountPerFace = 0;\n\t\t\t\t\tvar normalCountPerFace = 0;\n\n\t\t\t\t\tvar text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tvar start = startVertex;\n\t\t\t\tvar count = endVertex - startVertex;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn LoaderUtils.decodeText( new Uint8Array( buffer ) );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tvar array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( var i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tvar binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n} );\n\nexport { STLLoader };\n","import {\n\tFileLoader,\n\tLoader,\n\tTexture\n} from \"../../../build/three.module.js\";\n\nvar TGALoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nTGALoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TGALoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttexture.image = scope.parse( buffer );\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tparse: function ( buffer ) {\n\n\t\t// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js\n\n\t\tfunction tgaCheckHeader( header ) {\n\n\t\t\tswitch ( header.image_type ) {\n\n\t\t\t\t// check indexed type\n\n\t\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\t\tif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// check colormap type\n\n\t\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\t\tif ( header.colormap_type ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// What the need of a file without data ?\n\n\t\t\t\tcase TGA_TYPE_NO_DATA:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t\t\t\t// Invalid type ?\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid type \"%s\".', header.image_type );\n\n\t\t\t}\n\n\t\t\t// check image width and height\n\n\t\t\tif ( header.width <= 0 || header.height <= 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid image size.' );\n\n\t\t\t}\n\n\t\t\t// check image pixel size\n\n\t\t\tif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&\n\t\t\t\theader.pixel_size !== 24 && header.pixel_size !== 32 ) {\n\n\t\t\t\tconsole.error( 'THREE.TGALoader: Invalid pixel size \"%s\".', header.pixel_size );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// parse tga image buffer\n\n\t\tfunction tgaParse( use_rle, use_pal, header, offset, data ) {\n\n\t\t\tvar pixel_data,\n\t\t\t\tpixel_size,\n\t\t\t\tpixel_total,\n\t\t\t\tpalettes;\n\n\t\t\tpixel_size = header.pixel_size >> 3;\n\t\t\tpixel_total = header.width * header.height * pixel_size;\n\n\t\t\t // read palettes\n\n\t\t\t if ( use_pal ) {\n\n\t\t\t\t palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );\n\n\t\t\t }\n\n\t\t\t // read RLE\n\n\t\t\t if ( use_rle ) {\n\n\t\t\t\t pixel_data = new Uint8Array( pixel_total );\n\n\t\t\t\tvar c, count, i;\n\t\t\t\tvar shift = 0;\n\t\t\t\tvar pixels = new Uint8Array( pixel_size );\n\n\t\t\t\twhile ( shift < pixel_total ) {\n\n\t\t\t\t\tc = data[ offset ++ ];\n\t\t\t\t\tcount = ( c & 0x7f ) + 1;\n\n\t\t\t\t\t// RLE pixels\n\n\t\t\t\t\tif ( c & 0x80 ) {\n\n\t\t\t\t\t\t// bind pixel tmp array\n\n\t\t\t\t\t\tfor ( i = 0; i < pixel_size; ++ i ) {\n\n\t\t\t\t\t\t\tpixels[ i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// copy pixel array\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data.set( pixels, shift + i * pixel_size );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += pixel_size * count;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// raw pixels\n\n\t\t\t\t\t\tcount *= pixel_size;\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data[ shift + i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += count;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t } else {\n\n\t\t\t\t// raw pixels\n\n\t\t\t\tpixel_data = data.subarray(\n\t\t\t\t\t offset, offset += ( use_pal ? header.width * header.height : pixel_total )\n\t\t\t\t);\n\n\t\t\t }\n\n\t\t\t return {\n\t\t\t\tpixel_data: pixel_data,\n\t\t\t\tpalettes: palettes\n\t\t\t };\n\n\t\t}\n\n\t\tfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {\n\n\t\t\tvar colormap = palettes;\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\tcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 ); // Inversed ?\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) >> 3;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar color, i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tvar i = 0, x, y;\n\t\t\tvar width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction getTgaRGBA( data, width, height, image, palette ) {\n\n\t\t\tvar x_start,\n\t\t\t\ty_start,\n\t\t\t\tx_step,\n\t\t\t\ty_step,\n\t\t\t\tx_end,\n\t\t\t\ty_end;\n\n\t\t\tswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {\n\n\t\t\t\tdefault:\n\t\t\t\tcase TGA_ORIGIN_UL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_UR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( use_grey ) {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 24:\n\t\t\t\t\t\ttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\ttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Load image data according to specific method\n\t\t\t// var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';\n\t\t\t// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// TGA constants\n\n\t\tvar TGA_TYPE_NO_DATA = 0,\n\t\t\tTGA_TYPE_INDEXED = 1,\n\t\t\tTGA_TYPE_RGB = 2,\n\t\t\tTGA_TYPE_GREY = 3,\n\t\t\tTGA_TYPE_RLE_INDEXED = 9,\n\t\t\tTGA_TYPE_RLE_RGB = 10,\n\t\t\tTGA_TYPE_RLE_GREY = 11,\n\n\t\t\tTGA_ORIGIN_MASK = 0x30,\n\t\t\tTGA_ORIGIN_SHIFT = 0x04,\n\t\t\tTGA_ORIGIN_BL = 0x00,\n\t\t\tTGA_ORIGIN_BR = 0x01,\n\t\t\tTGA_ORIGIN_UL = 0x02,\n\t\t\tTGA_ORIGIN_UR = 0x03;\n\n\t\tif ( buffer.length < 19 ) console.error( 'THREE.TGALoader: Not enough data to contain header.' );\n\n\t\tvar content = new Uint8Array( buffer ),\n\t\t\toffset = 0,\n\t\t\theader = {\n\t\t\t\tid_length: content[ offset ++ ],\n\t\t\t\tcolormap_type: content[ offset ++ ],\n\t\t\t\timage_type: content[ offset ++ ],\n\t\t\t\tcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_size: content[ offset ++ ],\n\t\t\t\torigin: [\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8\n\t\t\t\t],\n\t\t\t\twidth: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\theight: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tpixel_size: content[ offset ++ ],\n\t\t\t\tflags: content[ offset ++ ]\n\t\t\t};\n\n\t\t// check tga if it is valid format\n\n\t\ttgaCheckHeader( header );\n\n\t\tif ( header.id_length + offset > buffer.length ) {\n\n\t\t\tconsole.error( 'THREE.TGALoader: No data.' );\n\n\t\t}\n\n\t\t// skip the needn't data\n\n\t\toffset += header.id_length;\n\n\t\t// get targa information about RLE compression and palette\n\n\t\tvar use_rle = false,\n\t\t\tuse_pal = false,\n\t\t\tuse_grey = false;\n\n\t\tswitch ( header.image_type ) {\n\n\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tuse_rle = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t//\n\n\t\tvar useOffscreen = typeof OffscreenCanvas !== 'undefined';\n\n\t\tvar canvas = useOffscreen ? new OffscreenCanvas( header.width, header.height ) : document.createElement( 'canvas' );\n\t\tcanvas.width = header.width;\n\t\tcanvas.height = header.height;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tvar imageData = context.createImageData( header.width, header.height );\n\n\t\tvar result = tgaParse( use_rle, use_pal, header, offset, content );\n\t\tgetTgaRGBA( imageData.data, header.width, header.height, result.pixel_data, result.palettes );\n\n\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\treturn useOffscreen ? canvas.transferToImageBitmap() : canvas;\n\n\t}\n\n} );\n\nexport { TGALoader };\n","import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTextureLoader,\n\tVector3,\n\tVectorKeyframeTrack\n} from \"../../../build/three.module.js\";\nimport { TGALoader } from \"../loaders/TGALoader.js\";\n\nvar ColladaLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nColladaLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ColladaLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\toptions: {\n\n\t\tset convertUpAxis( value ) {\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.' );\n\n\t\t}\n\n\t},\n\n\tparse: function ( text, path ) {\n\n\t\tfunction getElementsByTagName( xml, name ) {\n\n\t\t\t// Non recursive xml.getElementsByTagName() ...\n\n\t\t\tvar array = [];\n\t\t\tvar childNodes = xml.childNodes;\n\n\t\t\tfor ( var i = 0, l = childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = childNodes[ i ];\n\n\t\t\t\tif ( child.nodeName === name ) {\n\n\t\t\t\t\tarray.push( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseStrings( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parts[ i ];\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseFloats( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseFloat( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseInts( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tvar parts = text.trim().split( /\\s+/ );\n\t\t\tvar array = new Array( parts.length );\n\n\t\t\tfor ( var i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseInt( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseId( text ) {\n\n\t\t\treturn text.substring( 1 );\n\n\t\t}\n\n\t\tfunction generateId() {\n\n\t\t\treturn 'three_default_' + ( count ++ );\n\n\t\t}\n\n\t\tfunction isEmpty( object ) {\n\n\t\t\treturn Object.keys( object ).length === 0;\n\n\t\t}\n\n\t\t// asset\n\n\t\tfunction parseAsset( xml ) {\n\n\t\t\treturn {\n\t\t\t\tunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),\n\t\t\t\tupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseAssetUnit( xml ) {\n\n\t\t\tif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {\n\n\t\t\t\treturn parseFloat( xml.getAttribute( 'meter' ) );\n\n\t\t\t} else {\n\n\t\t\t\treturn 1; // default 1 meter\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAssetUpAxis( xml ) {\n\n\t\t\treturn xml !== undefined ? xml.textContent : 'Y_UP';\n\n\t\t}\n\n\t\t// library\n\n\t\tfunction parseLibrary( xml, libraryName, nodeName, parser ) {\n\n\t\t\tvar library = getElementsByTagName( xml, libraryName )[ 0 ];\n\n\t\t\tif ( library !== undefined ) {\n\n\t\t\t\tvar elements = getElementsByTagName( library, nodeName );\n\n\t\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\t\tparser( elements[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildLibrary( data, builder ) {\n\n\t\t\tfor ( var name in data ) {\n\n\t\t\t\tvar object = data[ name ];\n\t\t\t\tobject.build = builder( data[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// get\n\n\t\tfunction getBuild( data, builder ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\tdata.build = builder( data );\n\n\t\t\treturn data.build;\n\n\t\t}\n\n\t\t// animation\n\n\t\tfunction parseAnimation( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {},\n\t\t\t\tsamplers: {},\n\t\t\t\tchannels: {}\n\t\t\t};\n\n\t\t\tvar hasChildren = false;\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.samplers[ id ] = parseAnimationSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'channel':\n\t\t\t\t\t\tid = child.getAttribute( 'target' );\n\t\t\t\t\t\tdata.channels[ id ] = parseAnimationChannel( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'animation':\n\t\t\t\t\t\t// hierarchy of related animations\n\t\t\t\t\t\tparseAnimation( child );\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasChildren === false ) {\n\n\t\t\t\t// since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment\n\n\t\t\t\tlibrary.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimationSampler( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {},\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseAnimationChannel( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tvar target = xml.getAttribute( 'target' );\n\n\t\t\t// parsing SID Addressing Syntax\n\n\t\t\tvar parts = target.split( '/' );\n\n\t\t\tvar id = parts.shift();\n\t\t\tvar sid = parts.shift();\n\n\t\t\t// check selection syntax\n\n\t\t\tvar arraySyntax = ( sid.indexOf( '(' ) !== - 1 );\n\t\t\tvar memberSyntax = ( sid.indexOf( '.' ) !== - 1 );\n\n\t\t\tif ( memberSyntax ) {\n\n\t\t\t\t// member selection access\n\n\t\t\t\tparts = sid.split( '.' );\n\t\t\t\tsid = parts.shift();\n\t\t\t\tdata.member = parts.shift();\n\n\t\t\t} else if ( arraySyntax ) {\n\n\t\t\t\t// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.\n\n\t\t\t\tvar indices = sid.split( '(' );\n\t\t\t\tsid = indices.shift();\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i ++ ) {\n\n\t\t\t\t\tindices[ i ] = parseInt( indices[ i ].replace( /\\)/, '' ) );\n\n\t\t\t\t}\n\n\t\t\t\tdata.indices = indices;\n\n\t\t\t}\n\n\t\t\tdata.id = id;\n\t\t\tdata.sid = sid;\n\n\t\t\tdata.arraySyntax = arraySyntax;\n\t\t\tdata.memberSyntax = memberSyntax;\n\n\t\t\tdata.sampler = parseId( xml.getAttribute( 'source' ) );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildAnimation( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar channels = data.channels;\n\t\t\tvar samplers = data.samplers;\n\t\t\tvar sources = data.sources;\n\n\t\t\tfor ( var target in channels ) {\n\n\t\t\t\tif ( channels.hasOwnProperty( target ) ) {\n\n\t\t\t\t\tvar channel = channels[ target ];\n\t\t\t\t\tvar sampler = samplers[ channel.sampler ];\n\n\t\t\t\t\tvar inputId = sampler.inputs.INPUT;\n\t\t\t\t\tvar outputId = sampler.inputs.OUTPUT;\n\n\t\t\t\t\tvar inputSource = sources[ inputId ];\n\t\t\t\t\tvar outputSource = sources[ outputId ];\n\n\t\t\t\t\tvar animation = buildAnimationChannel( channel, inputSource, outputSource );\n\n\t\t\t\t\tcreateKeyframeTracks( animation, tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction getAnimation( id ) {\n\n\t\t\treturn getBuild( library.animations[ id ], buildAnimation );\n\n\t\t}\n\n\t\tfunction buildAnimationChannel( channel, inputSource, outputSource ) {\n\n\t\t\tvar node = library.nodes[ channel.id ];\n\t\t\tvar object3D = getNode( node.id );\n\n\t\t\tvar transform = node.transforms[ channel.sid ];\n\t\t\tvar defaultMatrix = node.matrix.clone().transpose();\n\n\t\t\tvar time, stride;\n\t\t\tvar i, il, j, jl;\n\n\t\t\tvar data = {};\n\n\t\t\t// the collada spec allows the animation of data in various ways.\n\t\t\t// depending on the transform type (matrix, translate, rotate, scale), we execute different logic\n\n\t\t\tswitch ( transform ) {\n\n\t\t\t\tcase 'matrix':\n\n\t\t\t\t\tfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\ttime = inputSource.array[ i ];\n\t\t\t\t\t\tstride = i * outputSource.stride;\n\n\t\t\t\t\t\tif ( data[ time ] === undefined ) data[ time ] = {};\n\n\t\t\t\t\t\tif ( channel.arraySyntax === true ) {\n\n\t\t\t\t\t\t\tvar value = outputSource.array[ stride ];\n\t\t\t\t\t\t\tvar index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];\n\n\t\t\t\t\t\t\tdata[ time ][ index ] = value;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tdata[ time ][ j ] = outputSource.array[ stride + j ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'scale':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tvar keyframes = prepareAnimationData( data, defaultMatrix );\n\n\t\t\tvar animation = {\n\t\t\t\tname: object3D.uuid,\n\t\t\t\tkeyframes: keyframes\n\t\t\t};\n\n\t\t\treturn animation;\n\n\t\t}\n\n\t\tfunction prepareAnimationData( data, defaultMatrix ) {\n\n\t\t\tvar keyframes = [];\n\n\t\t\t// transfer data into a sortable array\n\n\t\t\tfor ( var time in data ) {\n\n\t\t\t\tkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );\n\n\t\t\t}\n\n\t\t\t// ensure keyframes are sorted by time\n\n\t\t\tkeyframes.sort( ascending );\n\n\t\t\t// now we clean up all animation data, so we can use them for keyframe tracks\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\ttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );\n\n\t\t\t}\n\n\t\t\treturn keyframes;\n\n\t\t\t// array sort function\n\n\t\t\tfunction ascending( a, b ) {\n\n\t\t\t\treturn a.time - b.time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\tfunction createKeyframeTracks( animation, tracks ) {\n\n\t\t\tvar keyframes = animation.keyframes;\n\t\t\tvar name = animation.name;\n\n\t\t\tvar times = [];\n\t\t\tvar positionData = [];\n\t\t\tvar quaternionData = [];\n\t\t\tvar scaleData = [];\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tvar time = keyframe.time;\n\t\t\t\tvar value = keyframe.value;\n\n\t\t\t\tmatrix.fromArray( value ).transpose();\n\t\t\t\tmatrix.decompose( position, quaternion, scale );\n\n\t\t\t\ttimes.push( time );\n\t\t\t\tpositionData.push( position.x, position.y, position.z );\n\t\t\t\tquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );\n\t\t\t\tscaleData.push( scale.x, scale.y, scale.z );\n\n\t\t\t}\n\n\t\t\tif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );\n\t\t\tif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );\n\t\t\tif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction transformAnimationData( keyframes, property, defaultValue ) {\n\n\t\t\tvar keyframe;\n\n\t\t\tvar empty = true;\n\t\t\tvar i, l;\n\n\t\t\t// check, if values of a property are missing in our keyframes\n\n\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === undefined ) {\n\n\t\t\t\t\tkeyframe.value[ property ] = null; // mark as missing\n\n\t\t\t\t} else {\n\n\t\t\t\t\tempty = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( empty === true ) {\n\n\t\t\t\t// no values at all, so we set a default value\n\n\t\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\t\tkeyframe.value[ property ] = defaultValue;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// filling gaps\n\n\t\t\t\tcreateMissingKeyframes( keyframes, property );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createMissingKeyframes( keyframes, property ) {\n\n\t\t\tvar prev, next;\n\n\t\t\tfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === null ) {\n\n\t\t\t\t\tprev = getPrev( keyframes, i, property );\n\t\t\t\t\tnext = getNext( keyframes, i, property );\n\n\t\t\t\t\tif ( prev === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = next.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( next === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = prev.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinterpolate( keyframe, prev, next, property );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getPrev( keyframes, i, property ) {\n\n\t\t\twhile ( i >= 0 ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti --;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction getNext( keyframes, i, property ) {\n\n\t\t\twhile ( i < keyframes.length ) {\n\n\t\t\t\tvar keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction interpolate( key, prev, next, property ) {\n\n\t\t\tif ( ( next.time - prev.time ) === 0 ) {\n\n\t\t\t\tkey.value[ property ] = prev.value[ property ];\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];\n\n\t\t}\n\n\t\t// animation clips\n\n\t\tfunction parseAnimationClip( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'id' ) || 'default',\n\t\t\t\tstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),\n\t\t\t\tend: parseFloat( xml.getAttribute( 'end' ) || 0 ),\n\t\t\t\tanimations: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_animation':\n\t\t\t\t\t\tdata.animations.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.clips[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildAnimationClip( data ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar name = data.name;\n\t\t\tvar duration = ( data.end - data.start ) || - 1;\n\t\t\tvar animations = data.animations;\n\n\t\t\tfor ( var i = 0, il = animations.length; i < il; i ++ ) {\n\n\t\t\t\tvar animationTracks = getAnimation( animations[ i ] );\n\n\t\t\t\tfor ( var j = 0, jl = animationTracks.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttracks.push( animationTracks[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, duration, tracks );\n\n\t\t}\n\n\t\tfunction getAnimationClip( id ) {\n\n\t\t\treturn getBuild( library.clips[ id ], buildAnimationClip );\n\n\t\t}\n\n\t\t// controller\n\n\t\tfunction parseController( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'skin':\n\t\t\t\t\t\t// there is exactly one skin per controller\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.skin = parseSkin( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'morph':\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSkin( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsources: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_shape_matrix':\n\t\t\t\t\t\tdata.bindShapeMatrix = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tvar id = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'joints':\n\t\t\t\t\t\tdata.joints = parseJoints( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertex_weights':\n\t\t\t\t\t\tdata.vertexWeights = parseVertexWeights( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseJoints( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseVertexWeights( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = { id: id, offset: offset };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tdata.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v':\n\t\t\t\t\t\tdata.v = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildController( data ) {\n\n\t\t\tvar build = {\n\t\t\t\tid: data.id\n\t\t\t};\n\n\t\t\tvar geometry = library.geometries[ build.id ];\n\n\t\t\tif ( data.skin !== undefined ) {\n\n\t\t\t\tbuild.skin = buildSkin( data.skin );\n\n\t\t\t\t// we enhance the 'sources' property of the corresponding geometry with our skin data\n\n\t\t\t\tgeometry.sources.skinIndices = build.skin.indices;\n\t\t\t\tgeometry.sources.skinWeights = build.skin.weights;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildSkin( data ) {\n\n\t\t\tvar BONE_LIMIT = 4;\n\n\t\t\tvar build = {\n\t\t\t\tjoints: [], // this must be an array to preserve the joint order\n\t\t\t\tindices: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t},\n\t\t\t\tweights: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertexWeights = data.vertexWeights;\n\n\t\t\tvar vcount = vertexWeights.vcount;\n\t\t\tvar v = vertexWeights.v;\n\t\t\tvar jointOffset = vertexWeights.inputs.JOINT.offset;\n\t\t\tvar weightOffset = vertexWeights.inputs.WEIGHT.offset;\n\n\t\t\tvar jointSource = data.sources[ data.joints.inputs.JOINT ];\n\t\t\tvar inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];\n\n\t\t\tvar weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;\n\t\t\tvar stride = 0;\n\n\t\t\tvar i, j, l;\n\n\t\t\t// procces skin data for each vertex\n\n\t\t\tfor ( i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\tvar jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex\n\t\t\t\tvar vertexSkinData = [];\n\n\t\t\t\tfor ( j = 0; j < jointCount; j ++ ) {\n\n\t\t\t\t\tvar skinIndex = v[ stride + jointOffset ];\n\t\t\t\t\tvar weightId = v[ stride + weightOffset ];\n\t\t\t\t\tvar skinWeight = weights[ weightId ];\n\n\t\t\t\t\tvertexSkinData.push( { index: skinIndex, weight: skinWeight } );\n\n\t\t\t\t\tstride += 2;\n\n\t\t\t\t}\n\n\t\t\t\t// we sort the joints in descending order based on the weights.\n\t\t\t\t// this ensures, we only procced the most important joints of the vertex\n\n\t\t\t\tvertexSkinData.sort( descending );\n\n\t\t\t\t// now we provide for each vertex a set of four index and weight values.\n\t\t\t\t// the order of the skin data matches the order of vertices\n\n\t\t\t\tfor ( j = 0; j < BONE_LIMIT; j ++ ) {\n\n\t\t\t\t\tvar d = vertexSkinData[ j ];\n\n\t\t\t\t\tif ( d !== undefined ) {\n\n\t\t\t\t\t\tbuild.indices.array.push( d.index );\n\t\t\t\t\t\tbuild.weights.array.push( d.weight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbuild.indices.array.push( 0 );\n\t\t\t\t\t\tbuild.weights.array.push( 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup bind matrix\n\n\t\t\tif ( data.bindShapeMatrix ) {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();\n\n\t\t\t} else {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().identity();\n\n\t\t\t}\n\n\t\t\t// process bones and inverse bind matrix data\n\n\t\t\tfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {\n\n\t\t\t\tvar name = jointSource.array[ i ];\n\t\t\t\tvar boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();\n\n\t\t\t\tbuild.joints.push( { name: name, boneInverse: boneInverse } );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t\t// array sort function\n\n\t\t\tfunction descending( a, b ) {\n\n\t\t\t\treturn b.weight - a.weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getController( id ) {\n\n\t\t\treturn getBuild( library.controllers[ id ], buildController );\n\n\t\t}\n\n\t\t// image\n\n\t\tfunction parseImage( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent\n\t\t\t};\n\n\t\t\tlibrary.images[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildImage( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data.init_from;\n\n\t\t}\n\n\t\tfunction getImage( id ) {\n\n\t\t\tvar data = library.images[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildImage );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find image with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// effect\n\n\t\tfunction parseEffect( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'profile_COMMON':\n\t\t\t\t\t\tdata.profile = parseEffectProfileCOMMON( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.effects[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseEffectProfileCOMMON( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsurfaces: {},\n\t\t\t\tsamplers: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'newparam':\n\t\t\t\t\t\tparseEffectNewparam( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectNewparam( xml, data ) {\n\n\t\t\tvar sid = xml.getAttribute( 'sid' );\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'surface':\n\t\t\t\t\t\tdata.surfaces[ sid ] = parseEffectSurface( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler2D':\n\t\t\t\t\t\tdata.samplers[ sid ] = parseEffectSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectSurface( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'init_from':\n\t\t\t\t\t\tdata.init_from = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectSampler( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.source = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'constant':\n\t\t\t\t\tcase 'lambert':\n\t\t\t\t\tcase 'blinn':\n\t\t\t\t\tcase 'phong':\n\t\t\t\t\t\tdata.type = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseEffectParameters( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectParameter( child );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tdata[ child.nodeName ] = {\n\t\t\t\t\t\t\topaque: child.getAttribute( 'opaque' ),\n\t\t\t\t\t\t\tdata: parseEffectParameter( child )\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameter( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'float':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTexture( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttechnique: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tparseEffectParameterTextureExtra( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtra( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tparseEffectParameterTextureExtraTechnique( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtraTechnique( xml, data ) {\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'repeatU':\n\t\t\t\t\tcase 'repeatV':\n\t\t\t\t\tcase 'offsetU':\n\t\t\t\t\tcase 'offsetV':\n\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'wrapU':\n\t\t\t\t\tcase 'wrapV':\n\n\t\t\t\t\t\t// some files have values for wrapU/wrapV which become NaN via parseInt\n\n\t\t\t\t\t\tif ( child.textContent.toUpperCase() === 'TRUE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 1;\n\n\t\t\t\t\t\t} else if ( child.textContent.toUpperCase() === 'FALSE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseInt( child.textContent );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectExtra( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectExtraTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseInt( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildEffect( data ) {\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getEffect( id ) {\n\n\t\t\treturn getBuild( library.effects[ id ], buildEffect );\n\n\t\t}\n\n\t\t// material\n\n\t\tfunction parseMaterial( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_effect':\n\t\t\t\t\t\tdata.url = parseId( child.getAttribute( 'url' ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.materials[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction getTextureLoader( image ) {\n\n\t\t\tvar loader;\n\n\t\t\tvar extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/\n\t\t\textension = extension.toLowerCase();\n\n\t\t\tswitch ( extension ) {\n\n\t\t\t\tcase 'tga':\n\t\t\t\t\tloader = tgaLoader;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tloader = textureLoader;\n\n\t\t\t}\n\n\t\t\treturn loader;\n\n\t\t}\n\n\t\tfunction buildMaterial( data ) {\n\n\t\t\tvar effect = getEffect( data.url );\n\t\t\tvar technique = effect.profile.technique;\n\t\t\tvar extra = effect.profile.extra;\n\n\t\t\tvar material;\n\n\t\t\tswitch ( technique.type ) {\n\n\t\t\t\tcase 'phong':\n\t\t\t\tcase 'blinn':\n\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lambert':\n\t\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmaterial = new MeshBasicMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tmaterial.name = data.name || '';\n\n\t\t\tfunction getTexture( textureObject ) {\n\n\t\t\t\tvar sampler = effect.profile.samplers[ textureObject.id ];\n\t\t\t\tvar image = null;\n\n\t\t\t\t// get image\n\n\t\t\t\tif ( sampler !== undefined ) {\n\n\t\t\t\t\tvar surface = effect.profile.surfaces[ sampler.source ];\n\t\t\t\t\timage = getImage( surface.init_from );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );\n\t\t\t\t\timage = getImage( textureObject.id );\n\n\t\t\t\t}\n\n\t\t\t\t// create texture if image is avaiable\n\n\t\t\t\tif ( image !== null ) {\n\n\t\t\t\t\tvar loader = getTextureLoader( image );\n\n\t\t\t\t\tif ( loader !== undefined ) {\n\n\t\t\t\t\t\tvar texture = loader.load( image );\n\n\t\t\t\t\t\tvar extra = textureObject.extra;\n\n\t\t\t\t\t\tif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {\n\n\t\t\t\t\t\t\tvar technique = extra.technique;\n\n\t\t\t\t\t\t\ttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\t\t\t\t\t\ttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );\n\t\t\t\t\t\t\ttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttexture.wrapS = RepeatWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t create texture with ID:', textureObject.id );\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parameters = technique.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvar parameter = parameters[ key ];\n\n\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\t\tif ( parameter.color ) material.color.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.map = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\t\tif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tif ( parameter.texture ) material.lightMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tif ( parameter.float && material.shininess ) material.shininess = parameter.float;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\t\tif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar transparent = parameters[ 'transparent' ];\n\t\t\tvar transparency = parameters[ 'transparency' ];\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparency === undefined && transparent ) {\n\n\t\t\t\ttransparency = {\n\t\t\t\t\tfloat: 1\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparent === undefined && transparency ) {\n\n\t\t\t\ttransparent = {\n\t\t\t\t\topaque: 'A_ONE',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcolor: [ 1, 1, 1, 1 ]\n\t\t\t\t\t} };\n\n\t\t\t}\n\n\t\t\tif ( transparent && transparency ) {\n\n\t\t\t\t// handle case if a texture exists but no color\n\n\t\t\t\tif ( transparent.data.texture ) {\n\n\t\t\t\t\t// we do not set an alpha map (see #13792)\n\n\t\t\t\t\tmaterial.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = transparent.data.color;\n\n\t\t\t\t\tswitch ( transparent.opaque ) {\n\n\t\t\t\t\t\tcase 'A_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 3 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'A_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 0 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.', transparent.opaque );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.opacity < 1 ) material.transparent = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction getMaterial( id ) {\n\n\t\t\treturn getBuild( library.materials[ id ], buildMaterial );\n\n\t\t}\n\n\t\t// camera\n\n\t\tfunction parseCamera( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'optics':\n\t\t\t\t\t\tdata.optics = parseCameraOptics( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseCameraOptics( xml ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\treturn parseCameraTechnique( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {};\n\n\t\t}\n\n\t\tfunction parseCameraTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'perspective':\n\t\t\t\t\tcase 'orthographic':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseCameraParameters( child );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseCameraParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'xfov':\n\t\t\t\t\tcase 'yfov':\n\t\t\t\t\tcase 'xmag':\n\t\t\t\t\tcase 'ymag':\n\t\t\t\t\tcase 'znear':\n\t\t\t\t\tcase 'zfar':\n\t\t\t\t\tcase 'aspect_ratio':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildCamera( data ) {\n\n\t\t\tvar camera;\n\n\t\t\tswitch ( data.optics.technique ) {\n\n\t\t\t\tcase 'perspective':\n\t\t\t\t\tcamera = new PerspectiveCamera(\n\t\t\t\t\t\tdata.optics.parameters.yfov,\n\t\t\t\t\t\tdata.optics.parameters.aspect_ratio,\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'orthographic':\n\t\t\t\t\tvar ymag = data.optics.parameters.ymag;\n\t\t\t\t\tvar xmag = data.optics.parameters.xmag;\n\t\t\t\t\tvar aspectRatio = data.optics.parameters.aspect_ratio;\n\n\t\t\t\t\txmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;\n\t\t\t\t\tymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;\n\n\t\t\t\t\txmag *= 0.5;\n\t\t\t\t\tymag *= 0.5;\n\n\t\t\t\t\tcamera = new OrthographicCamera(\n\t\t\t\t\t\t- xmag, xmag, ymag, - ymag, // left, right, top, bottom\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcamera.name = data.name || '';\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tfunction getCamera( id ) {\n\n\t\t\tvar data = library.cameras[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildCamera );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find camera with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// light\n\n\t\tfunction parseLight( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tdata = parseLightTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.lights[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseLightTechnique( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\tcase 'point':\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\tcase 'ambient':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseLightParameters( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseLightParameters( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.color = new Color().fromArray( array );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'falloff_angle':\n\t\t\t\t\t\tdata.falloffAngle = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'quadratic_attenuation':\n\t\t\t\t\t\tvar f = parseFloat( child.textContent );\n\t\t\t\t\t\tdata.distance = f ? Math.sqrt( 1 / f ) : 0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildLight( data ) {\n\n\t\t\tvar light;\n\n\t\t\tswitch ( data.technique ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlight = new DirectionalLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlight = new PointLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlight = new SpotLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ambient':\n\t\t\t\t\tlight = new AmbientLight();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( data.parameters.color ) light.color.copy( data.parameters.color );\n\t\t\tif ( data.parameters.distance ) light.distance = data.parameters.distance;\n\n\t\t\treturn light;\n\n\t\t}\n\n\t\tfunction getLight( id ) {\n\n\t\t\tvar data = library.lights[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildLight );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find light with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// geometry\n\n\t\tfunction parseGeometry( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tsources: {},\n\t\t\t\tvertices: {},\n\t\t\t\tprimitives: []\n\t\t\t};\n\n\t\t\tvar mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];\n\n\t\t\t// the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep\n\t\t\tif ( mesh === undefined ) return;\n\n\t\t\tfor ( var i = 0; i < mesh.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = mesh.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tvar id = child.getAttribute( 'id' );\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertices':\n\t\t\t\t\t\t// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];\n\t\t\t\t\t\tdata.vertices = parseGeometryVertices( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polygons':\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tdata.primitives.push( parseGeometryPrimitive( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSource( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tarray: [],\n\t\t\t\tstride: 3\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'float_array':\n\t\t\t\t\t\tdata.array = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Name_array':\n\t\t\t\t\t\tdata.array = parseStrings( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tvar accessor = getElementsByTagName( child, 'accessor' )[ 0 ];\n\n\t\t\t\t\t\tif ( accessor !== undefined ) {\n\n\t\t\t\t\t\t\tdata.stride = parseInt( accessor.getAttribute( 'stride' ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryVertices( xml ) {\n\n\t\t\tvar data = {};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryPrimitive( xml ) {\n\n\t\t\tvar primitive = {\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tmaterial: xml.getAttribute( 'material' ),\n\t\t\t\tcount: parseInt( xml.getAttribute( 'count' ) ),\n\t\t\t\tinputs: {},\n\t\t\t\tstride: 0,\n\t\t\t\thasUV: false\n\t\t\t};\n\n\t\t\tfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tvar id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tvar semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tvar offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tvar set = parseInt( child.getAttribute( 'set' ) );\n\t\t\t\t\t\tvar inputname = ( set > 0 ? semantic + set : semantic );\n\t\t\t\t\t\tprimitive.inputs[ inputname ] = { id: id, offset: offset };\n\t\t\t\t\t\tprimitive.stride = Math.max( primitive.stride, offset + 1 );\n\t\t\t\t\t\tif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tprimitive.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'p':\n\t\t\t\t\t\tprimitive.p = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn primitive;\n\n\t\t}\n\n\t\tfunction groupPrimitives( primitives ) {\n\n\t\t\tvar build = {};\n\n\t\t\tfor ( var i = 0; i < primitives.length; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];\n\n\t\t\t\tbuild[ primitive.type ].push( primitive );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction checkUVCoordinates( primitives ) {\n\n\t\t\tvar count = 0;\n\n\t\t\tfor ( var i = 0, l = primitives.length; i < l; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\tif ( primitive.hasUV === true ) {\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count > 0 && count < primitives.length ) {\n\n\t\t\t\tprimitives.uvsNeedsFix = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildGeometry( data ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar sources = data.sources;\n\t\t\tvar vertices = data.vertices;\n\t\t\tvar primitives = data.primitives;\n\n\t\t\tif ( primitives.length === 0 ) return {};\n\n\t\t\t// our goal is to create one buffer geometry for a single type of primitives\n\t\t\t// first, we group all primitives by their type\n\n\t\t\tvar groupedPrimitives = groupPrimitives( primitives );\n\n\t\t\tfor ( var type in groupedPrimitives ) {\n\n\t\t\t\tvar primitiveType = groupedPrimitives[ type ];\n\n\t\t\t\t// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)\n\n\t\t\t\tcheckUVCoordinates( primitiveType );\n\n\t\t\t\t// third, create a buffer geometry for each type of primitives\n\n\t\t\t\tbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryType( primitives, sources, vertices ) {\n\n\t\t\tvar build = {};\n\n\t\t\tvar position = { array: [], stride: 0 };\n\t\t\tvar normal = { array: [], stride: 0 };\n\t\t\tvar uv = { array: [], stride: 0 };\n\t\t\tvar uv2 = { array: [], stride: 0 };\n\t\t\tvar color = { array: [], stride: 0 };\n\n\t\t\tvar skinIndex = { array: [], stride: 4 };\n\t\t\tvar skinWeight = { array: [], stride: 4 };\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar materialKeys = [];\n\n\t\t\tvar start = 0;\n\n\t\t\tfor ( var p = 0; p < primitives.length; p ++ ) {\n\n\t\t\t\tvar primitive = primitives[ p ];\n\t\t\t\tvar inputs = primitive.inputs;\n\n\t\t\t\t// groups\n\n\t\t\t\tvar count = 0;\n\n\t\t\t\tswitch ( primitive.type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tcount = primitive.count * 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tcount = primitive.count * 3;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polylist':\n\n\t\t\t\t\t\tfor ( var g = 0; g < primitive.count; g ++ ) {\n\n\t\t\t\t\t\t\tvar vc = primitive.vcount[ g ];\n\n\t\t\t\t\t\t\tswitch ( vc ) {\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcount += 3; // single triangle\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tcount += 6; // quad, subdivided into two triangles\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tcount += ( vc - 2 ) * 3; // polylist with more than four vertices\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addGroup( start, count, p );\n\t\t\t\tstart += count;\n\n\t\t\t\t// material\n\n\t\t\t\tif ( primitive.material ) {\n\n\t\t\t\t\tmaterialKeys.push( primitive.material );\n\n\t\t\t\t}\n\n\t\t\t\t// geometry data\n\n\t\t\t\tfor ( var name in inputs ) {\n\n\t\t\t\t\tvar input = inputs[ name ];\n\n\t\t\t\t\tswitch ( name )\t{\n\n\t\t\t\t\t\tcase 'VERTEX':\n\t\t\t\t\t\t\tfor ( var key in vertices ) {\n\n\t\t\t\t\t\t\t\tvar id = vertices[ key ];\n\n\t\t\t\t\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\t\t\t\t\tcase 'POSITION':\n\t\t\t\t\t\t\t\t\t\tvar prevLength = position.array.length;\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, position.array );\n\t\t\t\t\t\t\t\t\t\tposition.stride = sources[ id ].stride;\n\n\t\t\t\t\t\t\t\t\t\tif ( sources.skinWeights && sources.skinIndices ) {\n\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// see #3803\n\n\t\t\t\t\t\t\t\t\t\tif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar count = ( position.array.length - prevLength ) / position.stride;\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// fill missing uv coordinates\n\n\t\t\t\t\t\t\t\t\t\t\t\tuv.array.push( 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );\n\t\t\t\t\t\t\t\t\t\tnormal.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, color.array );\n\t\t\t\t\t\t\t\t\t\tcolor.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv2.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Semantic \"%s\" not handled in geometry build process.', key );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );\n\t\t\t\t\t\t\tnormal.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array );\n\t\t\t\t\t\t\tcolor.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );\n\t\t\t\t\t\t\tuv.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );\n\t\t\t\t\t\t\tuv2.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tif ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );\n\t\t\tif ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );\n\t\t\tif ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );\n\t\t\tif ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );\n\t\t\tif ( uv2.array.length > 0 ) geometry.setAttribute( 'uv2', new Float32BufferAttribute( uv2.array, uv2.stride ) );\n\n\t\t\tif ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );\n\t\t\tif ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );\n\n\t\t\tbuild.data = geometry;\n\t\t\tbuild.type = primitives[ 0 ].type;\n\t\t\tbuild.materialKeys = materialKeys;\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryData( primitive, source, offset, array ) {\n\n\t\t\tvar indices = primitive.p;\n\t\t\tvar stride = primitive.stride;\n\t\t\tvar vcount = primitive.vcount;\n\n\t\t\tfunction pushVector( i ) {\n\n\t\t\t\tvar index = indices[ i + offset ] * sourceStride;\n\t\t\t\tvar length = index + sourceStride;\n\n\t\t\t\tfor ( ; index < length; index ++ ) {\n\n\t\t\t\t\tarray.push( sourceArray[ index ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar sourceArray = source.array;\n\t\t\tvar sourceStride = source.stride;\n\n\t\t\tif ( primitive.vcount !== undefined ) {\n\n\t\t\t\tvar index = 0;\n\n\t\t\t\tfor ( var i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar count = vcount[ i ];\n\n\t\t\t\t\tif ( count === 4 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\t\t\t\t\t\tvar d = index + stride * 3;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( d );\n\t\t\t\t\t\tpushVector( b ); pushVector( c ); pushVector( d );\n\n\t\t\t\t\t} else if ( count === 3 ) {\n\n\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\tvar b = index + stride * 1;\n\t\t\t\t\t\tvar c = index + stride * 2;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t} else if ( count > 4 ) {\n\n\t\t\t\t\t\tfor ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar a = index + stride * 0;\n\t\t\t\t\t\t\tvar b = index + stride * k;\n\t\t\t\t\t\t\tvar c = index + stride * ( k + 1 );\n\n\t\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += stride * count;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += stride ) {\n\n\t\t\t\t\tpushVector( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getGeometry( id ) {\n\n\t\t\treturn getBuild( library.geometries[ id ], buildGeometry );\n\n\t\t}\n\n\t\t// kinematics\n\n\t\tfunction parseKinematicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tjoints: {},\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparseKinematicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildKinematicsModel( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsModel( id ) {\n\n\t\t\treturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );\n\n\t\t}\n\n\t\tfunction parseKinematicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'joint':\n\t\t\t\t\t\tdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseKinematicsJoint( xml ) {\n\n\t\t\tvar data;\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\tdata = parseKinematicsJointParameter( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsJointParameter( xml, data ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\taxis: new Vector3(),\n\t\t\t\tlimits: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 0\n\t\t\t\t},\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tstatic: false,\n\t\t\t\tzeroPosition: 0,\n\t\t\t\tmiddlePosition: 0\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.axis.fromArray( array );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'limits':\n\t\t\t\t\t\tvar max = child.getElementsByTagName( 'max' )[ 0 ];\n\t\t\t\t\t\tvar min = child.getElementsByTagName( 'min' )[ 0 ];\n\n\t\t\t\t\t\tdata.limits.max = parseFloat( max.textContent );\n\t\t\t\t\t\tdata.limits.min = parseFloat( min.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// if min is equal to or greater than max, consider the joint static\n\n\t\t\tif ( data.limits.min >= data.limits.max ) {\n\n\t\t\t\tdata.static = true;\n\n\t\t\t}\n\n\t\t\t// calculate middle position\n\n\t\t\tdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsLink( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tattachments: [],\n\t\t\t\ttransforms: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'attachment_full':\n\t\t\t\t\t\tdata.attachments.push( parseKinematicsAttachment( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsAttachment( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),\n\t\t\t\ttransforms: [],\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsTransform( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttype: xml.nodeName\n\t\t\t};\n\n\t\t\tvar array = parseFloats( xml.textContent );\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tdata.obj = new Matrix4();\n\t\t\t\t\tdata.obj.fromArray( array ).transpose();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tdata.angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// physics\n\n\t\tfunction parsePhysicsModel( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\trigidBodies: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'rigid_body':\n\t\t\t\t\t\tdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};\n\t\t\t\t\t\tparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parsePhysicsRigidBody( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparsePhysicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parsePhysicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'inertia':\n\t\t\t\t\t\tdata.inertia = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'mass':\n\t\t\t\t\t\tdata.mass = parseFloats( child.textContent )[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// scene\n\n\t\tfunction parseKinematicsScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tbindJointAxis: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_joint_axis':\n\t\t\t\t\t\tdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;\n\n\t\t}\n\n\t\tfunction parseKinematicsBindJointAxis( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\ttarget: xml.getAttribute( 'target' ).split( '/' ).pop()\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tvar param = child.getElementsByTagName( 'param' )[ 0 ];\n\t\t\t\t\t\tdata.axis = param.textContent;\n\t\t\t\t\t\tvar tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];\n\t\t\t\t\t\tdata.jointIndex = tmpJointIndex.substr( 0, tmpJointIndex.length - 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildKinematicsScene( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsScene( id ) {\n\n\t\t\treturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );\n\n\t\t}\n\n\t\tfunction setupKinematics() {\n\n\t\t\tvar kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];\n\t\t\tvar kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];\n\t\t\tvar visualSceneId = Object.keys( library.visualScenes )[ 0 ];\n\n\t\t\tif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;\n\n\t\t\tvar kinematicsModel = getKinematicsModel( kinematicsModelId );\n\t\t\tvar kinematicsScene = getKinematicsScene( kinematicsSceneId );\n\t\t\tvar visualScene = getVisualScene( visualSceneId );\n\n\t\t\tvar bindJointAxis = kinematicsScene.bindJointAxis;\n\t\t\tvar jointMap = {};\n\n\t\t\tfor ( var i = 0, l = bindJointAxis.length; i < l; i ++ ) {\n\n\t\t\t\tvar axis = bindJointAxis[ i ];\n\n\t\t\t\t// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'\n\n\t\t\t\tvar targetElement = collada.querySelector( '[sid=\"' + axis.target + '\"]' );\n\n\t\t\t\tif ( targetElement ) {\n\n\t\t\t\t\t// get the parent of the transform element\n\n\t\t\t\t\tvar parentVisualElement = targetElement.parentElement;\n\n\t\t\t\t\t// connect the joint of the kinematics model with the element in the visual scene\n\n\t\t\t\t\tconnect( axis.jointIndex, parentVisualElement );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction connect( jointIndex, visualElement ) {\n\n\t\t\t\tvar visualElementName = visualElement.getAttribute( 'name' );\n\t\t\t\tvar joint = kinematicsModel.joints[ jointIndex ];\n\n\t\t\t\tvisualScene.traverse( function ( object ) {\n\n\t\t\t\t\tif ( object.name === visualElementName ) {\n\n\t\t\t\t\t\tjointMap[ jointIndex ] = {\n\t\t\t\t\t\t\tobject: object,\n\t\t\t\t\t\t\ttransforms: buildTransformList( visualElement ),\n\t\t\t\t\t\t\tjoint: joint,\n\t\t\t\t\t\t\tposition: joint.zeroPosition\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tvar m0 = new Matrix4();\n\n\t\t\tkinematics = {\n\n\t\t\t\tjoints: kinematicsModel && kinematicsModel.joints,\n\n\t\t\t\tgetJointValue: function ( jointIndex ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\treturn jointData.position;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\\'t exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetJointValue: function ( jointIndex, value ) {\n\n\t\t\t\t\tvar jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\tvar joint = jointData.joint;\n\n\t\t\t\t\t\tif ( value > joint.limits.max || value < joint.limits.min ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );\n\n\t\t\t\t\t\t} else if ( joint.static ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar object = jointData.object;\n\t\t\t\t\t\t\tvar axis = joint.axis;\n\t\t\t\t\t\t\tvar transforms = jointData.transforms;\n\n\t\t\t\t\t\t\tmatrix.identity();\n\n\t\t\t\t\t\t\t// each update, we have to apply all transforms in the correct order\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < transforms.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar transform = transforms[ i ];\n\n\t\t\t\t\t\t\t\t// if there is a connection of the transform node with a joint, apply the joint value\n\n\t\t\t\t\t\t\t\tif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {\n\n\t\t\t\t\t\t\t\t\tswitch ( joint.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tswitch ( transform.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.scale( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tobject.matrix.copy( matrix );\n\t\t\t\t\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t\t\t\tjointMap[ jointIndex ].position = value;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction buildTransformList( node ) {\n\n\t\t\tvar transforms = [];\n\n\t\t\tvar xml = collada.querySelector( '[id=\"' + node.id + '\"]' );\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar matrix = new Matrix4().fromArray( array ).transpose();\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: matrix\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar vector = new Vector3().fromArray( array );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector,\n\t\t\t\t\t\t\tangle: angle\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transforms;\n\n\t\t}\n\n\t\t// nodes\n\n\t\tfunction prepareNodes( xml ) {\n\n\t\t\tvar elements = xml.getElementsByTagName( 'node' );\n\n\t\t\t// ensure all node elements have id attributes\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tvar element = elements[ i ];\n\n\t\t\t\tif ( element.hasAttribute( 'id' ) === false ) {\n\n\t\t\t\t\telement.setAttribute( 'id', generateId() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar matrix = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\tfunction parseNode( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\ttype: xml.getAttribute( 'type' ),\n\t\t\t\tid: xml.getAttribute( 'id' ),\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tmatrix: new Matrix4(),\n\t\t\t\tnodes: [],\n\t\t\t\tinstanceCameras: [],\n\t\t\t\tinstanceControllers: [],\n\t\t\t\tinstanceLights: [],\n\t\t\t\tinstanceGeometries: [],\n\t\t\t\tinstanceNodes: [],\n\t\t\t\ttransforms: {}\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'node':\n\t\t\t\t\t\tdata.nodes.push( child.getAttribute( 'id' ) );\n\t\t\t\t\t\tparseNode( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_camera':\n\t\t\t\t\t\tdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_controller':\n\t\t\t\t\t\tdata.instanceControllers.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_light':\n\t\t\t\t\t\tdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_geometry':\n\t\t\t\t\t\tdata.instanceGeometries.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_node':\n\t\t\t\t\t\tdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.fromArray( array ).transpose() );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvector.fromArray( array );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tvar angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tvar array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.scale( vector.fromArray( array ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasNode( data.id ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );\n\n\t\t\t} else {\n\n\t\t\t\tlibrary.nodes[ data.id ] = data;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseNodeInstance( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tid: parseId( xml.getAttribute( 'url' ) ),\n\t\t\t\tmaterials: {},\n\t\t\t\tskeletons: []\n\t\t\t};\n\n\t\t\tfor ( var i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tvar child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_material':\n\t\t\t\t\t\tvar instances = child.getElementsByTagName( 'instance_material' );\n\n\t\t\t\t\t\tfor ( var j = 0; j < instances.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar instance = instances[ j ];\n\t\t\t\t\t\t\tvar symbol = instance.getAttribute( 'symbol' );\n\t\t\t\t\t\t\tvar target = instance.getAttribute( 'target' );\n\n\t\t\t\t\t\t\tdata.materials[ symbol ] = parseId( target );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skeleton':\n\t\t\t\t\t\tdata.skeletons.push( parseId( child.textContent ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildSkeleton( skeletons, joints ) {\n\n\t\t\tvar boneData = [];\n\t\t\tvar sortedBoneData = [];\n\n\t\t\tvar i, j, data;\n\n\t\t\t// a skeleton can have multiple root bones. collada expresses this\n\t\t\t// situtation with multiple \"skeleton\" tags per controller instance\n\n\t\t\tfor ( i = 0; i < skeletons.length; i ++ ) {\n\n\t\t\t\tvar skeleton = skeletons[ i ];\n\n\t\t\t\tvar root;\n\n\t\t\t\tif ( hasNode( skeleton ) ) {\n\n\t\t\t\t\troot = getNode( skeleton );\n\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t} else if ( hasVisualScene( skeleton ) ) {\n\n\t\t\t\t\t// handle case where the skeleton refers to the visual scene (#13335)\n\n\t\t\t\t\tvar visualScene = library.visualScenes[ skeleton ];\n\t\t\t\t\tvar children = visualScene.children;\n\n\t\t\t\t\tfor ( var j = 0; j < children.length; j ++ ) {\n\n\t\t\t\t\t\tvar child = children[ j ];\n\n\t\t\t\t\t\tif ( child.type === 'JOINT' ) {\n\n\t\t\t\t\t\t\tvar root = getNode( child.id );\n\t\t\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// sort bone data (the order is defined in the corresponding controller)\n\n\t\t\tfor ( i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < boneData.length; j ++ ) {\n\n\t\t\t\t\tdata = boneData[ j ];\n\n\t\t\t\t\tif ( data.bone.name === joints[ i ].name ) {\n\n\t\t\t\t\t\tsortedBoneData[ i ] = data;\n\t\t\t\t\t\tdata.processed = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add unprocessed bone data at the end of the list\n\n\t\t\tfor ( i = 0; i < boneData.length; i ++ ) {\n\n\t\t\t\tdata = boneData[ i ];\n\n\t\t\t\tif ( data.processed === false ) {\n\n\t\t\t\t\tsortedBoneData.push( data );\n\t\t\t\t\tdata.processed = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup arrays for skeleton creation\n\n\t\t\tvar bones = [];\n\t\t\tvar boneInverses = [];\n\n\t\t\tfor ( i = 0; i < sortedBoneData.length; i ++ ) {\n\n\t\t\t\tdata = sortedBoneData[ i ];\n\n\t\t\t\tbones.push( data.bone );\n\t\t\t\tboneInverses.push( data.boneInverse );\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t}\n\n\t\tfunction buildBoneHierarchy( root, joints, boneData ) {\n\n\t\t\t// setup bone data from visual scene\n\n\t\t\troot.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isBone === true ) {\n\n\t\t\t\t\tvar boneInverse;\n\n\t\t\t\t\t// retrieve the boneInverse from the controller data\n\n\t\t\t\t\tfor ( var i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\t\t\tvar joint = joints[ i ];\n\n\t\t\t\t\t\tif ( joint.name === object.name ) {\n\n\t\t\t\t\t\t\tboneInverse = joint.boneInverse;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( boneInverse === undefined ) {\n\n\t\t\t\t\t\t// Unfortunately, there can be joints in the visual scene that are not part of the\n\t\t\t\t\t\t// corresponding controller. In this case, we have to create a dummy boneInverse matrix\n\t\t\t\t\t\t// for the respective bone. This bone won't affect any vertices, because there are no skin indices\n\t\t\t\t\t\t// and weights defined for it. But we still have to add the bone to the sorted bone list in order to\n\t\t\t\t\t\t// ensure a correct animation of the model.\n\n\t\t\t\t\t\tboneInverse = new Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction buildNode( data ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tvar matrix = data.matrix;\n\t\t\tvar nodes = data.nodes;\n\t\t\tvar type = data.type;\n\t\t\tvar instanceCameras = data.instanceCameras;\n\t\t\tvar instanceControllers = data.instanceControllers;\n\t\t\tvar instanceLights = data.instanceLights;\n\t\t\tvar instanceGeometries = data.instanceGeometries;\n\t\t\tvar instanceNodes = data.instanceNodes;\n\n\t\t\t// nodes\n\n\t\t\tfor ( var i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( nodes[ i ] ) );\n\n\t\t\t}\n\n\t\t\t// instance cameras\n\n\t\t\tfor ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceCamera = getCamera( instanceCameras[ i ] );\n\n\t\t\t\tif ( instanceCamera !== null ) {\n\n\t\t\t\t\tobjects.push( instanceCamera.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance controllers\n\n\t\t\tfor ( var i = 0, l = instanceControllers.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceControllers[ i ];\n\t\t\t\tvar controller = getController( instance.id );\n\t\t\t\tvar geometries = getGeometry( controller.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tvar skeletons = instance.skeletons;\n\t\t\t\tvar joints = controller.skin.joints;\n\n\t\t\t\tvar skeleton = buildSkeleton( skeletons, joints );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = newObjects[ j ];\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.bind( skeleton, controller.skin.bindMatrix );\n\t\t\t\t\t\tobject.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance lights\n\n\t\t\tfor ( var i = 0, l = instanceLights.length; i < l; i ++ ) {\n\n\t\t\t\tvar instanceLight = getLight( instanceLights[ i ] );\n\n\t\t\t\tif ( instanceLight !== null ) {\n\n\t\t\t\t\tobjects.push( instanceLight.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance geometries\n\n\t\t\tfor ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {\n\n\t\t\t\tvar instance = instanceGeometries[ i ];\n\n\t\t\t\t// a single geometry instance in collada can lead to multiple object3Ds.\n\t\t\t\t// this is the case when primitives are combined like triangles and lines\n\n\t\t\t\tvar geometries = getGeometry( instance.id );\n\t\t\t\tvar newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tobjects.push( newObjects[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance nodes\n\n\t\t\tfor ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( instanceNodes[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tvar object;\n\n\t\t\tif ( nodes.length === 0 && objects.length === 1 ) {\n\n\t\t\t\tobject = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tobject = ( type === 'JOINT' ) ? new Bone() : new Group();\n\n\t\t\t\tfor ( var i = 0; i < objects.length; i ++ ) {\n\n\t\t\t\t\tobject.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.name = ( type === 'JOINT' ) ? data.sid : data.name;\n\t\t\tobject.matrix.copy( matrix );\n\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tvar fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );\n\n\t\tfunction resolveMaterialBinding( keys, instanceMaterials ) {\n\n\t\t\tvar materials = [];\n\n\t\t\tfor ( var i = 0, l = keys.length; i < l; i ++ ) {\n\n\t\t\t\tvar id = instanceMaterials[ keys[ i ] ];\n\n\t\t\t\tif ( id === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );\n\t\t\t\t\tmaterials.push( fallbackMaterial );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials.push( getMaterial( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t}\n\n\t\tfunction buildObjects( geometries, instanceMaterials ) {\n\n\t\t\tvar objects = [];\n\n\t\t\tfor ( var type in geometries ) {\n\n\t\t\t\tvar geometry = geometries[ type ];\n\n\t\t\t\tvar materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );\n\n\t\t\t\t// handle case if no materials are defined\n\n\t\t\t\tif ( materials.length === 0 ) {\n\n\t\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\t\tmaterials.push( new LineBasicMaterial() );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials.push( new MeshPhongMaterial() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// regard skinning\n\n\t\t\t\tvar skinning = ( geometry.data.attributes.skinIndex !== undefined );\n\n\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tmaterials[ i ].skinning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// choose between a single or multi materials (material array)\n\n\t\t\t\tvar material = ( materials.length === 1 ) ? materials[ 0 ] : materials;\n\n\t\t\t\t// now create a specific 3D object\n\n\t\t\t\tvar object;\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\t\tobject = new LineSegments( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tobject = new Line( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry.data, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry.data, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tobjects.push( object );\n\n\t\t\t}\n\n\t\t\treturn objects;\n\n\t\t}\n\n\t\tfunction hasNode( id ) {\n\n\t\t\treturn library.nodes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getNode( id ) {\n\n\t\t\treturn getBuild( library.nodes[ id ], buildNode );\n\n\t\t}\n\n\t\t// visual scenes\n\n\t\tfunction parseVisualScene( xml ) {\n\n\t\t\tvar data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tprepareNodes( xml );\n\n\t\t\tvar elements = getElementsByTagName( xml, 'node' );\n\n\t\t\tfor ( var i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tdata.children.push( parseNode( elements[ i ] ) );\n\n\t\t\t}\n\n\t\t\tlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildVisualScene( data ) {\n\n\t\t\tvar group = new Group();\n\t\t\tgroup.name = data.name;\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar child = children[ i ];\n\n\t\t\t\tgroup.add( getNode( child.id ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction hasVisualScene( id ) {\n\n\t\t\treturn library.visualScenes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getVisualScene( id ) {\n\n\t\t\treturn getBuild( library.visualScenes[ id ], buildVisualScene );\n\n\t\t}\n\n\t\t// scenes\n\n\t\tfunction parseScene( xml ) {\n\n\t\t\tvar instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];\n\t\t\treturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );\n\n\t\t}\n\n\t\tfunction setupAnimations() {\n\n\t\t\tvar clips = library.clips;\n\n\t\t\tif ( isEmpty( clips ) === true ) {\n\n\t\t\t\tif ( isEmpty( library.animations ) === false ) {\n\n\t\t\t\t\t// if there are animations but no clips, we create a default clip for playback\n\n\t\t\t\t\tvar tracks = [];\n\n\t\t\t\t\tfor ( var id in library.animations ) {\n\n\t\t\t\t\t\tvar animationTracks = getAnimation( id );\n\n\t\t\t\t\t\tfor ( var i = 0, l = animationTracks.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\ttracks.push( animationTracks[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimations.push( new AnimationClip( 'default', - 1, tracks ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var id in clips ) {\n\n\t\t\t\t\tanimations.push( getAnimationClip( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// convert the parser error element into text with each child elements text\n\t\t// separated by new lines.\n\n\t\tfunction parserErrorToText( parserError ) {\n\n\t\t\tvar result = '';\n\t\t\tvar stack = [ parserError ];\n\n\t\t\twhile ( stack.length ) {\n\n\t\t\t\tvar node = stack.shift();\n\n\t\t\t\tif ( node.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t\t\tresult += node.textContent;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += '\\n';\n\t\t\t\t\tstack.push.apply( stack, node.childNodes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result.trim();\n\n\t\t}\n\n\t\tif ( text.length === 0 ) {\n\n\t\t\treturn { scene: new Scene() };\n\n\t\t}\n\n\t\tvar xml = new DOMParser().parseFromString( text, 'application/xml' );\n\n\t\tvar collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];\n\n\t\tvar parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];\n\t\tif ( parserError !== undefined ) {\n\n\t\t\t// Chrome will return parser error with a div in it\n\n\t\t\tvar errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];\n\t\t\tvar errorText;\n\n\t\t\tif ( errorElement ) {\n\n\t\t\t\terrorText = errorElement.textContent;\n\n\t\t\t} else {\n\n\t\t\t\terrorText = parserErrorToText( parserError );\n\n\t\t\t}\n\n\t\t\tconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\\n', errorText );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// metadata\n\n\t\tvar version = collada.getAttribute( 'version' );\n\t\tconsole.log( 'THREE.ColladaLoader: File version', version );\n\n\t\tvar asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );\n\t\tvar textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\tvar tgaLoader;\n\n\t\tif ( TGALoader ) {\n\n\t\t\ttgaLoader = new TGALoader( this.manager );\n\t\t\ttgaLoader.setPath( this.resourcePath || path );\n\n\t\t}\n\n\t\t//\n\n\t\tvar animations = [];\n\t\tvar kinematics = {};\n\t\tvar count = 0;\n\n\t\t//\n\n\t\tvar library = {\n\t\t\tanimations: {},\n\t\t\tclips: {},\n\t\t\tcontrollers: {},\n\t\t\timages: {},\n\t\t\teffects: {},\n\t\t\tmaterials: {},\n\t\t\tcameras: {},\n\t\t\tlights: {},\n\t\t\tgeometries: {},\n\t\t\tnodes: {},\n\t\t\tvisualScenes: {},\n\t\t\tkinematicsModels: {},\n\t\t\tphysicsModels: {},\n\t\t\tkinematicsScenes: {}\n\t\t};\n\n\t\tparseLibrary( collada, 'library_animations', 'animation', parseAnimation );\n\t\tparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );\n\t\tparseLibrary( collada, 'library_controllers', 'controller', parseController );\n\t\tparseLibrary( collada, 'library_images', 'image', parseImage );\n\t\tparseLibrary( collada, 'library_effects', 'effect', parseEffect );\n\t\tparseLibrary( collada, 'library_materials', 'material', parseMaterial );\n\t\tparseLibrary( collada, 'library_cameras', 'camera', parseCamera );\n\t\tparseLibrary( collada, 'library_lights', 'light', parseLight );\n\t\tparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );\n\t\tparseLibrary( collada, 'library_nodes', 'node', parseNode );\n\t\tparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );\n\t\tparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );\n\t\tparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );\n\t\tparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );\n\n\t\tbuildLibrary( library.animations, buildAnimation );\n\t\tbuildLibrary( library.clips, buildAnimationClip );\n\t\tbuildLibrary( library.controllers, buildController );\n\t\tbuildLibrary( library.images, buildImage );\n\t\tbuildLibrary( library.effects, buildEffect );\n\t\tbuildLibrary( library.materials, buildMaterial );\n\t\tbuildLibrary( library.cameras, buildCamera );\n\t\tbuildLibrary( library.lights, buildLight );\n\t\tbuildLibrary( library.geometries, buildGeometry );\n\t\tbuildLibrary( library.visualScenes, buildVisualScene );\n\n\t\tsetupAnimations();\n\t\tsetupKinematics();\n\n\t\tvar scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );\n\n\t\tif ( asset.upAxis === 'Z_UP' ) {\n\n\t\t\tscene.quaternion.setFromEuler( new Euler( - Math.PI / 2, 0, 0 ) );\n\n\t\t}\n\n\t\tscene.scale.multiplyScalar( asset.unit );\n\n\t\treturn {\n\t\t\tanimations: animations,\n\t\t\tkinematics: kinematics,\n\t\t\tlibrary: library,\n\t\t\tscene: scene\n\t\t};\n\n\t}\n\n} );\n\nexport { ColladaLoader };\n","import { Object3D, Quaternion } from 'three';\n\nclass URDFCollider extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFVisual extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFLink extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFJoint extends Object3D {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n this.jointValue = new Array(2).fill(0);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.urdfNode = null;\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = null;\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.jointType = source.jointType;\n this.axis = source.axis ? source.axis.clone() : null;\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n return this;\n\n }\n\n /* Public Functions */\n setJointValue(...values) {\n\n values = values.map(v => parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return false;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return false;\n if (angle === this.angle) return false;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n // FromAxisAngle seems to rotate the opposite of the\n // expected angle for URDF, so negate it here\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return false;\n if (pos === this.angle) return false;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n this.position.addScaledVector(this.axis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'floating':\n case 'planar':\n // TODO: Support these joint types\n console.warn(`'${ this.jointType }' joint not yet supported`);\n\n }\n\n return false;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.name in source.joints) {\n\n this.joints[c.name] = c;\n\n }\n\n if (c.isURDFLink && c.name in source.links) {\n\n this.links[c.name] = c;\n\n }\n\n if (c.isURDFCollider && c.name in source.colliders) {\n\n this.colliders[c.name] = c;\n\n }\n\n if (c.isURDFVisual && c.name in source.visual) {\n\n this.visual[c.name] = c;\n\n }\n\n });\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = didChange || this.setJointValue(name, ...value);\n\n } else {\n\n didChange = didChange || this.setJointValue(name, value);\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = {};\r\n\r\n }\r\n\r\n /* Public API */\r\n loadAsync(urdf) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.load(urdf, resolve, null, reject);\r\n\r\n });\r\n\r\n }\r\n\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n\r\n if (onProgress) {\r\n\r\n onProgress(null);\r\n\r\n }\r\n return res.text();\r\n\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error('URDFLoader: Error loading file.', e);\r\n\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n","import {\r\n WebGLRenderer,\r\n PerspectiveCamera,\r\n Scene,\r\n Mesh,\r\n PlaneBufferGeometry,\r\n ShadowMaterial,\r\n DirectionalLight,\r\n PCFSoftShadowMap,\r\n sRGBEncoding,\r\n Color,\r\n AmbientLight,\r\n Box3,\r\n LoadingManager,\r\n MathUtils,\r\n Group,\r\n} from 'three';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\r\nimport { VRButton } from 'three/examples/jsm/webxr/VRButton.js';\r\nimport URDFLoader from '../../src/URDFLoader.js';\r\n\r\nlet scene, camera, renderer, robot, controls, cameraContainer, vrCamera;\r\n\r\ninit();\r\n\r\nfunction init() {\r\n\r\n scene = new Scene();\r\n scene.background = new Color(0xffab40);\r\n\r\n cameraContainer = new Group();\r\n scene.add(cameraContainer);\r\n\r\n vrCamera = new PerspectiveCamera();\r\n cameraContainer.add(vrCamera);\r\n\r\n camera = new PerspectiveCamera();\r\n camera.position.set(10, 10, 10);\r\n\r\n renderer = new WebGLRenderer({ antialias: true });\r\n renderer.outputEncoding = sRGBEncoding;\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = PCFSoftShadowMap;\r\n document.body.appendChild(renderer.domElement);\r\n\r\n // vr\r\n renderer.xr.enabled = true;\r\n renderer.setAnimationLoop(render);\r\n document.body.appendChild(VRButton.createButton(renderer));\r\n\r\n const directionalLight = new DirectionalLight(0xffffff, 1.0);\r\n directionalLight.castShadow = true;\r\n directionalLight.shadow.mapSize.setScalar(1024);\r\n directionalLight.position.set(5, 30, 5);\r\n scene.add(directionalLight);\r\n\r\n const ambientLight = new AmbientLight(0xffb74d, 0.5);\r\n scene.add(ambientLight);\r\n\r\n const ground = new Mesh(new PlaneBufferGeometry(), new ShadowMaterial({ opacity: 0.25 }));\r\n ground.material.color.set(0xe65100).convertSRGBToLinear();\r\n ground.rotation.x = -Math.PI / 2;\r\n ground.scale.setScalar(30);\r\n ground.receiveShadow = true;\r\n scene.add(ground);\r\n\r\n controls = new OrbitControls(camera, renderer.domElement);\r\n controls.enablePan = false;\r\n controls.minDistance = 1e-2;\r\n\r\n const manager = new LoadingManager();\r\n const loader = new URDFLoader(manager);\r\n loader.loadMeshCb = function(path, manager, onComplete) {\r\n const ext = path.split(/\\./g).pop().toLowerCase();\r\n\r\n switch (ext) {\r\n\r\n case 'gltf':\r\n new GLTFLoader(manager).load(\r\n path,\r\n result => onComplete(result.scene),\r\n null,\r\n err => onComplete(null, err),\r\n );\r\n break;\r\n default:\r\n loader.defaultMeshLoader(path, manager, onComplete);\r\n\r\n }\r\n\r\n };\r\n loader.load('../../urdf/T12/urdf/T12_flipped.URDF', result => {\r\n robot = result;\r\n });\r\n\r\n manager.onLoad = function() {\r\n\r\n robot.rotation.x = Math.PI / 2;\r\n robot.traverse(c => {\r\n c.castShadow = true;\r\n });\r\n for (let i = 1; i <= 6; i++) {\r\n\r\n robot.joints[`HP${ i }`].setJointValue(MathUtils.degToRad(30));\r\n robot.joints[`KP${ i }`].setJointValue(MathUtils.degToRad(120));\r\n robot.joints[`AP${ i }`].setJointValue(MathUtils.degToRad(-60));\r\n\r\n }\r\n robot.updateMatrixWorld(true);\r\n\r\n const bb = new Box3();\r\n bb.setFromObject(robot);\r\n\r\n robot.position.y -= bb.min.y;\r\n\r\n scene.add(robot);\r\n\r\n };\r\n\r\n onResize();\r\n window.addEventListener('resize', onResize);\r\n\r\n}\r\n\r\nfunction onResize() {\r\n\r\n renderer.setSize(window.innerWidth, window.innerHeight);\r\n renderer.setPixelRatio(window.devicePixelRatio);\r\n\r\n camera.aspect = window.innerWidth / window.innerHeight;\r\n camera.updateProjectionMatrix();\r\n\r\n vrCamera.aspect = window.innerWidth / window.innerHeight;\r\n vrCamera.updateProjectionMatrix();\r\n\r\n}\r\n\r\nfunction render() {\r\n\r\n const vrEnabled = Boolean(renderer.xr.getSession());\r\n cameraContainer.position.copy(camera.position);\r\n renderer.render(scene, vrEnabled ? vrCamera : camera);\r\n\r\n}\r\n"],"names":["Node","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry"],"mappings":"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AAC,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,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACpE,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;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,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;CAC3D,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;CAC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EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7D,GAAG,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;CAC/D,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;AACjE;CACA,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG;CAClH,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,GAAG,GAAG,GAAG,CAAC;AACnH;CACA,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D;CACA,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF;CACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACzB;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,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,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,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG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A,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CAChF,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,E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"} \ No newline at end of file diff --git a/javascript/umd/URDFLoader.js b/javascript/umd/URDFLoader.js index cc4f096e..8e564460 100644 --- a/javascript/umd/URDFLoader.js +++ b/javascript/umd/URDFLoader.js @@ -82,10 +82,13 @@ if (this.jointType === v) return; this._jointType = v; - + this.matrixWorldNeedsUpdate = true; switch (v) { case 'fixed': + this.jointValue = []; + break; + case 'continuous': case 'revolute': case 'prismatic': @@ -111,6 +114,7 @@ } constructor(...args) { + super(...args); this.isURDFJoint = true; @@ -125,6 +129,7 @@ this.origPosition = null; this.origQuaternion = null; + } /* Overrides */ @@ -145,6 +150,7 @@ this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null; return this; + } /* Public Functions */ @@ -171,7 +177,7 @@ let angle = values[0]; if (angle == null) return false; - if (angle === this.jointValue) return false; + if (angle === this.angle) return false; if (!this.ignoreLimits && this.jointType === 'revolute') { @@ -203,7 +209,7 @@ let pos = values[0]; if (pos == null) return false; - if (pos === this.jointValue) return false; + if (pos === this.angle) return false; if (!this.ignoreLimits) { @@ -414,11 +420,21 @@ this.parseCollision = false; this.packages = ''; this.workingPath = ''; - this.fetchOptions = null; + this.fetchOptions = {}; } /* Public API */ + loadAsync(urdf) { + + return new Promise((resolve, reject) => { + + this.load(urdf, resolve, null, reject); + + }); + + } + // urdf: The path to the URDF within the package OR absolute // onComplete: Callback that is passed the model once loaded load(urdf, onComplete, onProgress, onError) { @@ -430,12 +446,17 @@ const urdfPath = this.manager.resolveURL(urdf); manager.itemStart(urdfPath); + fetch(urdfPath, this.fetchOptions) .then(res => { + if (onProgress) { + onProgress(null); + } return res.text(); + }) .then(data => { @@ -453,9 +474,13 @@ .catch(e => { if (onError) { + onError(e); + } else { + console.error('URDFLoader: Error loading file.', e); + } manager.itemError(urdfPath); manager.itemEnd(urdfPath); diff --git a/javascript/umd/URDFLoader.js.map b/javascript/umd/URDFLoader.js.map index 18897b35..1cda12ff 100644 --- a/javascript/umd/URDFLoader.js.map +++ b/javascript/umd/URDFLoader.js.map @@ -1 +1 @@ -{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Quaternion } from 'three';\r\n\r\nclass URDFCollider extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFCollider = true;\r\n this.type = 'URDFCollider';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFVisual extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFVisual = true;\r\n this.type = 'URDFVisual';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFLink extends Object3D {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFLink = true;\r\n this.type = 'URDFLink';\r\n this.urdfNode = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n this.urdfNode = source.urdfNode;\r\n\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFJoint extends Object3D {\r\n\r\n get jointType() {\r\n\r\n return this._jointType;\r\n\r\n }\r\n\r\n set jointType(v) {\r\n\r\n if (this.jointType === v) return;\r\n this._jointType = v;\r\n\r\n switch (v) {\r\n\r\n case 'fixed':\r\n case 'continuous':\r\n case 'revolute':\r\n case 'prismatic':\r\n this.jointValue = new Array(1).fill(0);\r\n break;\r\n\r\n case 'planar':\r\n this.jointValue = new Array(2).fill(0);\r\n break;\r\n\r\n case 'floating':\r\n this.jointValue = new Array(6).fill(0);\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n get angle() {\r\n\r\n return this.jointValue[0];\r\n\r\n }\r\n\r\n constructor(...args) {\r\n super(...args);\r\n\r\n this.isURDFJoint = true;\r\n this.type = 'URDFJoint';\r\n\r\n this.urdfNode = null;\r\n this.jointValue = null;\r\n this.jointType = 'fixed';\r\n this.axis = null;\r\n this.limit = { lower: 0, upper: 0 };\r\n this.ignoreLimits = false;\r\n\r\n this.origPosition = null;\r\n this.origQuaternion = null;\r\n }\r\n\r\n /* Overrides */\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfNode = source.urdfNode;\r\n this.jointType = source.jointType;\r\n this.axis = source.axis ? source.axis.clone() : null;\r\n this.limit.lower = source.limit.lower;\r\n this.limit.upper = source.limit.upper;\r\n this.ignoreLimits = false;\r\n\r\n this.jointValue = [...source.jointValue];\r\n\r\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\r\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\r\n\r\n return this;\r\n }\r\n\r\n /* Public Functions */\r\n setJointValue(...values) {\r\n\r\n values = values.map(v => parseFloat(v));\r\n\r\n if (!this.origPosition || !this.origQuaternion) {\r\n\r\n this.origPosition = this.position.clone();\r\n this.origQuaternion = this.quaternion.clone();\r\n\r\n }\r\n\r\n switch (this.jointType) {\r\n\r\n case 'fixed': {\r\n\r\n return false;\r\n\r\n }\r\n case 'continuous':\r\n case 'revolute': {\r\n\r\n let angle = values[0];\r\n if (angle == null) return false;\r\n if (angle === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits && this.jointType === 'revolute') {\r\n\r\n angle = Math.min(this.limit.upper, angle);\r\n angle = Math.max(this.limit.lower, angle);\r\n\r\n }\r\n\r\n // FromAxisAngle seems to rotate the opposite of the\r\n // expected angle for URDF, so negate it here\r\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\r\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\r\n\r\n if (this.jointValue[0] !== angle) {\r\n\r\n this.jointValue[0] = angle;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'prismatic': {\r\n\r\n let pos = values[0];\r\n if (pos == null) return false;\r\n if (pos === this.jointValue) return false;\r\n\r\n if (!this.ignoreLimits) {\r\n\r\n pos = Math.min(this.limit.upper, pos);\r\n pos = Math.max(this.limit.lower, pos);\r\n\r\n }\r\n\r\n this.position.copy(this.origPosition);\r\n this.position.addScaledVector(this.axis, pos);\r\n\r\n if (this.jointValue[0] !== pos) {\r\n\r\n this.jointValue[0] = pos;\r\n this.matrixWorldNeedsUpdate = true;\r\n return true;\r\n\r\n } else {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n case 'floating':\r\n case 'planar':\r\n // TODO: Support these joint types\r\n console.warn(`'${ this.jointType }' joint not yet supported`);\r\n\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n}\r\n\r\nclass URDFRobot extends URDFLink {\r\n\r\n constructor(...args) {\r\n\r\n super(...args);\r\n this.isURDFRobot = true;\r\n this.urdfNode = null;\r\n\r\n this.urdfRobotNode = null;\r\n this.robotName = null;\r\n\r\n this.links = null;\r\n this.joints = null;\r\n this.colliders = null;\r\n this.visual = null;\r\n this.frames = null;\r\n\r\n }\r\n\r\n copy(source, recursive) {\r\n\r\n super.copy(source, recursive);\r\n\r\n this.urdfRobotNode = source.urdfRobotNode;\r\n this.robotName = source.robotName;\r\n\r\n this.links = {};\r\n this.joints = {};\r\n this.colliders = {};\r\n this.visual = {};\r\n\r\n this.traverse(c => {\r\n\r\n if (c.isURDFJoint && c.name in source.joints) {\r\n\r\n this.joints[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFLink && c.name in source.links) {\r\n\r\n this.links[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFCollider && c.name in source.colliders) {\r\n\r\n this.colliders[c.name] = c;\r\n\r\n }\r\n\r\n if (c.isURDFVisual && c.name in source.visual) {\r\n\r\n this.visual[c.name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n this.frames = {\r\n ...this.colliders,\r\n ...this.visual,\r\n ...this.links,\r\n ...this.joints,\r\n };\r\n\r\n return this;\r\n\r\n }\r\n\r\n getFrame(name) {\r\n\r\n return this.frames[name];\r\n\r\n }\r\n\r\n setJointValue(jointName, ...angle) {\r\n\r\n const joint = this.joints[jointName];\r\n if (joint) {\r\n\r\n return joint.setJointValue(...angle);\r\n\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setJointValues(values) {\r\n\r\n let didChange = false;\r\n for (const name in values) {\r\n\r\n const value = values[name];\r\n if (Array.isArray(value)) {\r\n\r\n didChange = didChange || this.setJointValue(name, ...value);\r\n\r\n } else {\r\n\r\n didChange = didChange || this.setJointValue(name, value);\r\n\r\n }\r\n\r\n }\r\n\r\n return didChange;\r\n\r\n }\r\n\r\n}\r\n\r\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\r\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = null;\r\n\r\n }\r\n\r\n /* Public API */\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n if (onProgress) {\r\n onProgress(null);\r\n }\r\n return res.text();\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n onError(e);\r\n } else {\r\n console.error('URDFLoader: Error loading file.', e);\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n"],"names":["Object3D","Quaternion","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry","STLLoader","ColladaLoader"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Quaternion } from 'three';\n\nclass URDFCollider extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFVisual extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFLink extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n this.urdfNode = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n this.urdfNode = source.urdfNode;\n\n return this;\n\n }\n\n}\n\nclass URDFJoint extends Object3D {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n this.jointValue = new Array(2).fill(0);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.urdfNode = null;\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = null;\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.jointType = source.jointType;\n this.axis = source.axis ? source.axis.clone() : null;\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n return this;\n\n }\n\n /* Public Functions */\n setJointValue(...values) {\n\n values = values.map(v => parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return false;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return false;\n if (angle === this.angle) return false;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n // FromAxisAngle seems to rotate the opposite of the\n // expected angle for URDF, so negate it here\n const delta = new Quaternion().setFromAxisAngle(this.axis, angle);\n this.quaternion.multiplyQuaternions(this.origQuaternion, delta);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return false;\n if (pos === this.angle) return false;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n this.position.addScaledVector(this.axis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n case 'floating':\n case 'planar':\n // TODO: Support these joint types\n console.warn(`'${ this.jointType }' joint not yet supported`);\n\n }\n\n return false;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.name in source.joints) {\n\n this.joints[c.name] = c;\n\n }\n\n if (c.isURDFLink && c.name in source.links) {\n\n this.links[c.name] = c;\n\n }\n\n if (c.isURDFCollider && c.name in source.colliders) {\n\n this.colliders[c.name] = c;\n\n }\n\n if (c.isURDFVisual && c.name in source.visual) {\n\n this.visual[c.name] = c;\n\n }\n\n });\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = didChange || this.setJointValue(name, ...value);\n\n } else {\n\n didChange = didChange || this.setJointValue(name, value);\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\r\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual } from './URDFClasses.js';\r\n\r\n/*\r\nReference coordinate frames for THREE.js and ROS.\r\nBoth coordinate systems are right handed so the URDF is instantiated without\r\nframe transforms. The resulting model can be rotated to rectify the proper up,\r\nright, and forward directions\r\n\r\nTHREE.js\r\n Y\r\n |\r\n |\r\n .-----X\r\n /\r\nZ\r\n\r\nROS URDf\r\n Z\r\n | X\r\n | /\r\n Y-----.\r\n\r\n*/\r\n\r\nconst tempQuaternion = new THREE.Quaternion();\r\nconst tempEuler = new THREE.Euler();\r\n\r\n// take a vector \"x y z\" and process it into\r\n// an array [x, y, z]\r\nfunction processTuple(val) {\r\n\r\n if (!val) return [0, 0, 0];\r\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\r\n\r\n}\r\n\r\n// applies a rotation a threejs object in URDF order\r\nfunction applyRotation(obj, rpy, additive = false) {\r\n\r\n // if additive is true the rotation is applied in\r\n // addition to the existing rotation\r\n if (!additive) obj.rotation.set(0, 0, 0);\r\n\r\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\r\n tempQuaternion.setFromEuler(tempEuler);\r\n tempQuaternion.multiply(obj.quaternion);\r\n obj.quaternion.copy(tempQuaternion);\r\n\r\n}\r\n\r\n/* URDFLoader Class */\r\n// Loads and reads a URDF file into a THREEjs Object3D format\r\nexport default\r\nclass URDFLoader {\r\n\r\n constructor(manager) {\r\n\r\n this.manager = manager || THREE.DefaultLoadingManager;\r\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\r\n this.parseVisual = true;\r\n this.parseCollision = false;\r\n this.packages = '';\r\n this.workingPath = '';\r\n this.fetchOptions = {};\r\n\r\n }\r\n\r\n /* Public API */\r\n loadAsync(urdf) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n this.load(urdf, resolve, null, reject);\r\n\r\n });\r\n\r\n }\r\n\r\n // urdf: The path to the URDF within the package OR absolute\r\n // onComplete: Callback that is passed the model once loaded\r\n load(urdf, onComplete, onProgress, onError) {\r\n\r\n // Check if a full URI is specified before\r\n // prepending the package info\r\n const manager = this.manager;\r\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\r\n const urdfPath = this.manager.resolveURL(urdf);\r\n\r\n manager.itemStart(urdfPath);\r\n\r\n fetch(urdfPath, this.fetchOptions)\r\n .then(res => {\r\n\r\n if (onProgress) {\r\n\r\n onProgress(null);\r\n\r\n }\r\n return res.text();\r\n\r\n })\r\n .then(data => {\r\n\r\n if (this.workingPath === '') {\r\n\r\n this.workingPath = workingPath;\r\n\r\n }\r\n\r\n const model = this.parse(data);\r\n onComplete(model);\r\n manager.itemEnd(urdfPath);\r\n\r\n })\r\n .catch(e => {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error('URDFLoader: Error loading file.', e);\r\n\r\n }\r\n manager.itemError(urdfPath);\r\n manager.itemEnd(urdfPath);\r\n\r\n });\r\n\r\n }\r\n\r\n parse(content) {\r\n\r\n const packages = this.packages;\r\n const loadMeshCb = this.loadMeshCb;\r\n const parseVisual = this.parseVisual;\r\n const parseCollision = this.parseCollision;\r\n const workingPath = this.workingPath;\r\n const manager = this.manager;\r\n const linkMap = {};\r\n const jointMap = {};\r\n const materialMap = {};\r\n\r\n // Resolves the path of mesh files\r\n function resolvePath(path) {\r\n\r\n if (!/^package:\\/\\//.test(path)) {\r\n\r\n return workingPath ? workingPath + path : path;\r\n\r\n }\r\n\r\n // Remove \"package://\" keyword and split meshPath at the first slash\r\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\r\n\r\n if (typeof packages === 'string') {\r\n\r\n // \"pkg\" is one single package\r\n if (packages.endsWith(targetPkg)) {\r\n\r\n // \"pkg\" is the target package\r\n return packages + '/' + relPath;\r\n\r\n } else {\r\n\r\n // Assume \"pkg\" is the target package's parent directory\r\n return packages + '/' + targetPkg + '/' + relPath;\r\n\r\n }\r\n\r\n } else if (typeof packages === 'object') {\r\n\r\n // \"pkg\" is a map of packages\r\n if (targetPkg in packages) {\r\n\r\n return packages[targetPkg] + '/' + relPath;\r\n\r\n } else {\r\n\r\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // Process the URDF text format\r\n function processUrdf(data) {\r\n\r\n let children;\r\n if (data instanceof Document) {\r\n\r\n children = [ ...data.children ];\r\n\r\n } else if (data instanceof Element) {\r\n\r\n children = [ data ];\r\n\r\n } else {\r\n\r\n const parser = new DOMParser();\r\n const urdf = parser.parseFromString(data, 'text/xml');\r\n children = [ ...urdf.children ];\r\n\r\n }\r\n\r\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\r\n return processRobot(robotNode);\r\n\r\n }\r\n\r\n // Process the node\r\n function processRobot(robot) {\r\n\r\n const robotNodes = [ ...robot.children ];\r\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\r\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\r\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\r\n const obj = new URDFRobot();\r\n\r\n obj.robotName = robot.getAttribute('name');\r\n obj.urdfRobotNode = robot;\r\n\r\n // Create the map\r\n materials.forEach(m => {\r\n\r\n const name = m.getAttribute('name');\r\n materialMap[name] = processMaterial(m);\r\n\r\n });\r\n\r\n // Create the map\r\n const visualMap = {};\r\n const colliderMap = {};\r\n links.forEach(l => {\r\n\r\n const name = l.getAttribute('name');\r\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\r\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\r\n\r\n });\r\n\r\n // Create the map\r\n joints.forEach(j => {\r\n\r\n const name = j.getAttribute('name');\r\n jointMap[name] = processJoint(j);\r\n\r\n });\r\n\r\n obj.joints = jointMap;\r\n obj.links = linkMap;\r\n obj.colliders = colliderMap;\r\n obj.visual = visualMap;\r\n\r\n obj.frames = {\r\n ...colliderMap,\r\n ...visualMap,\r\n ...linkMap,\r\n ...jointMap,\r\n };\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process joint nodes and parent them\r\n function processJoint(joint) {\r\n\r\n const children = [ ...joint.children ];\r\n const jointType = joint.getAttribute('type');\r\n const obj = new URDFJoint();\r\n obj.urdfNode = joint;\r\n obj.name = joint.getAttribute('name');\r\n obj.jointType = jointType;\r\n\r\n let parent = null;\r\n let child = null;\r\n let xyz = [0, 0, 0];\r\n let rpy = [0, 0, 0];\r\n\r\n // Extract the attributes\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'origin') {\r\n\r\n xyz = processTuple(n.getAttribute('xyz'));\r\n rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n } else if (type === 'child') {\r\n\r\n child = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'parent') {\r\n\r\n parent = linkMap[n.getAttribute('link')];\r\n\r\n } else if (type === 'limit') {\r\n\r\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\r\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\r\n\r\n }\r\n\r\n });\r\n\r\n // Join the links\r\n parent.add(obj);\r\n obj.add(child);\r\n applyRotation(obj, rpy);\r\n obj.position.set(xyz[0], xyz[1], xyz[2]);\r\n\r\n // Set up the rotate function\r\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\r\n\r\n if (axisNode) {\r\n\r\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\r\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\r\n obj.axis.normalize();\r\n\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n // Process the nodes\r\n function processLink(link, visualMap, colliderMap, target = null) {\r\n\r\n if (target === null) {\r\n\r\n target = new URDFLink();\r\n\r\n }\r\n\r\n const children = [ ...link.children ];\r\n target.name = link.getAttribute('name');\r\n target.urdfNode = link;\r\n\r\n if (parseVisual) {\r\n\r\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\r\n visualNodes.forEach(vn => {\r\n\r\n const v = processLinkElement(vn, materialMap);\r\n target.add(v);\r\n\r\n if (vn.hasAttribute('name')) {\r\n\r\n const name = vn.getAttribute('name');\r\n v.name = name;\r\n visualMap[name] = v;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n if (parseCollision) {\r\n\r\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\r\n collisionNodes.forEach(cn => {\r\n\r\n const c = processLinkElement(cn);\r\n target.add(c);\r\n\r\n if (cn.hasAttribute('name')) {\r\n\r\n const name = cn.getAttribute('name');\r\n c.name = name;\r\n colliderMap[name] = c;\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return target;\r\n\r\n }\r\n\r\n function processMaterial(node) {\r\n\r\n const matNodes = [ ...node.children ];\r\n const material = new THREE.MeshPhongMaterial();\r\n\r\n material.name = node.getAttribute('name') || '';\r\n matNodes.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'color') {\r\n\r\n const rgba =\r\n n\r\n .getAttribute('rgba')\r\n .split(/\\s/g)\r\n .map(v => parseFloat(v));\r\n\r\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\r\n material.opacity = rgba[3];\r\n material.transparent = rgba[3] < 1;\r\n material.depthWrite = !material.transparent;\r\n\r\n } else if (type === 'texture') {\r\n\r\n // The URDF spec does not require that the tag include\r\n // a filename attribute so skip loading the texture if not provided.\r\n const filename = n.getAttribute('filename');\r\n if (filename) {\r\n\r\n const loader = new THREE.TextureLoader(manager);\r\n const filePath = resolvePath(filename);\r\n material.map = loader.load(filePath);\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n return material;\r\n\r\n }\r\n\r\n // Process the visual and collision nodes into meshes\r\n function processLinkElement(vn, materialMap = {}) {\r\n\r\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\r\n const children = [ ...vn.children ];\r\n let material = null;\r\n\r\n // get the material first\r\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\r\n if (materialNode) {\r\n\r\n const name = materialNode.getAttribute('name');\r\n if (name && name in materialMap) {\r\n\r\n material = materialMap[name];\r\n\r\n } else {\r\n\r\n material = processMaterial(materialNode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n material = new THREE.MeshPhongMaterial();\r\n\r\n }\r\n\r\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\r\n group.urdfNode = vn;\r\n\r\n children.forEach(n => {\r\n\r\n const type = n.nodeName.toLowerCase();\r\n if (type === 'geometry') {\r\n\r\n const geoType = n.children[0].nodeName.toLowerCase();\r\n if (geoType === 'mesh') {\r\n\r\n const filename = n.children[0].getAttribute('filename');\r\n const filePath = resolvePath(filename);\r\n\r\n // file path is null if a package directory is not provided.\r\n if (filePath !== null) {\r\n\r\n const scaleAttr = n.children[0].getAttribute('scale');\r\n let scale = [1, 1, 1];\r\n if (scaleAttr) {\r\n\r\n scale = processTuple(scaleAttr);\r\n\r\n }\r\n\r\n loadMeshCb(filePath, manager, (obj, err) => {\r\n\r\n if (err) {\r\n\r\n console.error('URDFLoader: Error loading mesh.', err);\r\n\r\n } else if (obj) {\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n\r\n obj.material = material;\r\n\r\n }\r\n\r\n // multiply the existing scale by the scale components because\r\n // the loaded model could have important scale values already applied\r\n // to the root. Collada files, for example, can load in with a scale\r\n // to convert the model units to meters.\r\n obj.scale.x *= scale[0];\r\n obj.scale.y *= scale[1];\r\n obj.scale.z *= scale[2];\r\n\r\n group.add(obj);\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } else if (geoType === 'box') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.BoxBufferGeometry(1, 1, 1);\r\n primitiveModel.material = material;\r\n\r\n const size = processTuple(n.children[0].getAttribute('size'));\r\n primitiveModel.scale.set(size[0], size[1], size[2]);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'sphere') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.SphereBufferGeometry(1, 30, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n primitiveModel.scale.set(radius, radius, radius);\r\n\r\n group.add(primitiveModel);\r\n\r\n } else if (geoType === 'cylinder') {\r\n\r\n const primitiveModel = new THREE.Mesh();\r\n primitiveModel.geometry = new THREE.CylinderBufferGeometry(1, 1, 1, 30);\r\n primitiveModel.material = material;\r\n\r\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\r\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\r\n primitiveModel.scale.set(radius, length, radius);\r\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\r\n\r\n group.add(primitiveModel);\r\n\r\n }\r\n\r\n } else if (type === 'origin') {\r\n\r\n const xyz = processTuple(n.getAttribute('xyz'));\r\n const rpy = processTuple(n.getAttribute('rpy'));\r\n\r\n group.position.set(xyz[0], xyz[1], xyz[2]);\r\n group.rotation.set(0, 0, 0);\r\n applyRotation(group, rpy);\r\n\r\n }\r\n\r\n });\r\n\r\n return group;\r\n\r\n }\r\n\r\n return processUrdf(content);\r\n\r\n }\r\n\r\n // Default mesh loading function\r\n defaultMeshLoader(path, manager, done) {\r\n\r\n if (/\\.stl$/i.test(path)) {\r\n\r\n const loader = new STLLoader(manager);\r\n loader.load(path, geom => {\r\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\r\n done(mesh);\r\n });\r\n\r\n } else if (/\\.dae$/i.test(path)) {\r\n\r\n const loader = new ColladaLoader(manager);\r\n loader.load(path, dae => done(dae.scene));\r\n\r\n } else {\r\n\r\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n"],"names":["Object3D","Quaternion","THREE.Quaternion","THREE.Euler","THREE.DefaultLoadingManager","THREE.LoaderUtils","THREE.Vector3","THREE.MeshPhongMaterial","THREE.TextureLoader","THREE.Mesh","THREE.BoxBufferGeometry","THREE.SphereBufferGeometry","THREE.CylinderBufferGeometry","STLLoader","ColladaLoader"],"mappings":"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"} \ No newline at end of file