From 6584dfc07ddd59e36c6fd8ff8c19c7e2dd46bf35 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Wed, 16 Feb 2022 18:55:29 +0800 Subject: [PATCH] Move implement to upper place --- README.md | 3 +- dist/bundle_doric-three.js | 55 +++++++++++++++-- dist/bundle_doric-three.js.map | 2 +- example/src/Example.tsx | 88 +++++++++++++++++++++++++--- index.ts | 3 +- lib/GLTFView.ts | 104 --------------------------------- lib/ThreeView.ts | 8 +-- lib/loaders/GLTFLoader.ts | 19 +++++- 8 files changed, 155 insertions(+), 127 deletions(-) delete mode 100644 lib/GLTFView.ts diff --git a/README.md b/README.md index 2a50c4e..cc3aa84 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# DoricThree -1. 将细节API暴露到上层 \ No newline at end of file +# DoricThree \ No newline at end of file diff --git a/dist/bundle_doric-three.js b/dist/bundle_doric-three.js index 47c2ef6..149fc9b 100644 --- a/dist/bundle_doric-three.js +++ b/dist/bundle_doric-three.js @@ -25,6 +25,9 @@ exports.ThreeView = class ThreeView extends dangle.DangleView { this.touchable = true; this.onReady = (gl) => { var _a; + if (this.gestureRef && this.gestureRef.current) { + this.gesture = this.gestureRef.current; + } this.gl = gl; const width = gl.drawingBufferWidth; const height = gl.drawingBufferHeight; @@ -103,9 +106,6 @@ exports.ThreeView = class ThreeView extends dangle.DangleView { } }; } - set gestureRef(ref) { - this.gesture = ref.current; - } }; exports.ThreeView = __decorate$1([ doric.ViewComponent, @@ -866,6 +866,23 @@ class OrbitControls extends THREE.EventDispatcher { this.update(); } } +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// This is very similar to OrbitControls, another set of touch behavior +// +// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - left mouse, or arrow keys / touch: one-finger move +class MapControls extends OrbitControls { + constructor(object, domElement) { + super(object, domElement); + this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up + this.mouseButtons.LEFT = THREE.MOUSE.PAN; + this.mouseButtons.RIGHT = THREE.MOUSE.ROTATE; + this.touches.ONE = THREE.TOUCH.PAN; + this.touches.TWO = THREE.TOUCH.DOLLY_ROTATE; + } +} const console$1 = { error: (...args) => { @@ -972,7 +989,7 @@ class FileLoader extends THREE.Loader { } } -var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { +var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } @@ -1000,7 +1017,7 @@ class TextureLoader extends THREE.Loader { const assetsResource = new FakeResource(res.type, link); const context = this.context; (function () { - return __awaiter(this, void 0, void 0, function* () { + return __awaiter$1(this, void 0, void 0, function* () { const imageInfo = yield doric.imageDecoder(context).getImageInfo(assetsResource); const imagePixels = yield doric.imageDecoder(context).decodeToPixels(assetsResource); texture.image = { @@ -1018,6 +1035,27 @@ class TextureLoader extends THREE.Loader { } } +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function loadGLTF(context, resource) { + return __awaiter(this, void 0, void 0, function* () { + const loader = new GLTFLoader(context); + return new Promise((resolve, reject) => { + loader.load(resource, (gltf) => { + resolve(gltf); + }, undefined, (e) => { + reject(e); + }); + }); + }); +} class GLTFLoader extends THREE.Loader { constructor(doricContext, manager) { super(manager); @@ -3889,7 +3927,7 @@ exports.GLTFView = class GLTFView extends doric.GestureContainer { mixer.clipAction(gltf.animations[0]).play(); animate(); }, undefined, function (e) { - doric.loge("error", e, new Error().stack); + doric.loge(e); }); } catch (error) { @@ -3902,4 +3940,9 @@ exports.GLTFView = __decorate([ doric.ViewComponent, __metadata("design:paramtypes", []) ], exports.GLTFView); + +exports.GLTFLoader = GLTFLoader; +exports.MapControls = MapControls; +exports.OrbitControls = OrbitControls; +exports.loadGLTF = loadGLTF; //# sourceMappingURL=bundle_doric-three.js.map diff --git a/dist/bundle_doric-three.js.map b/dist/bundle_doric-three.js.map index d017d39..895a5ac 100644 --- a/dist/bundle_doric-three.js.map +++ b/dist/bundle_doric-three.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle_doric-three.js","sources":["../build/lib/ThreeView.js","../build/lib/controls/OrbitControls.js","../build/lib/utils.js","../build/lib/loaders/FileLoader.js","../build/lib/loaders/TextureLoader.js","../build/lib/loaders/GLTFLoader.js","../build/lib/GLTFView.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n// @ts-nocheck\nimport { ViewComponent } from \"doric\";\nimport { DangleView } from \"dangle\";\nimport THREE from \"three\";\nlet ThreeView = class ThreeView extends DangleView {\n constructor() {\n super();\n this.touchable = true;\n this.onReady = (gl) => {\n var _a;\n this.gl = gl;\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n const inputCanvas = {\n width: width,\n height: height,\n style: {},\n addEventListener: this.addEventListener,\n removeEventListener: (() => { }),\n setPointerCapture: (() => { }),\n releasePointerCapture: (() => { }),\n clientWidth: width,\n clientHeight: height,\n getContext: (() => {\n return gl;\n }),\n };\n let window = {\n innerWidth: width,\n innerHeight: height,\n devicePixelRatio: 1,\n addEventListener: (() => { }),\n };\n const renderer = new THREE.WebGLRenderer({\n antialias: true,\n canvas: inputCanvas,\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.outputEncoding = THREE.sRGBEncoding;\n (_a = this.onInited) === null || _a === void 0 ? void 0 : _a.call(this, renderer);\n };\n }\n isDirty() {\n var _a;\n (_a = this.gl) === null || _a === void 0 ? void 0 : _a.endFrame();\n return super.isDirty();\n }\n set gesture(v) {\n this.addEventListener = (name, fn) => {\n if (name == \"pointerdown\") {\n v.onTouchDown = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointerup\") {\n v.onTouchUp = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointermove\") {\n v.onTouchMove = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointercancel\") {\n v.onTouchCancel = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n };\n }\n set gestureRef(ref) {\n this.gesture = ref.current;\n }\n};\nThreeView = __decorate([\n ViewComponent,\n __metadata(\"design:paramtypes\", [])\n], ThreeView);\nexport { ThreeView };\n//# sourceMappingURL=ThreeView.js.map","// @ts-nocheck\nimport { EventDispatcher, MOUSE, Quaternion, Spherical, TOUCH, Vector2, Vector3 } from 'three';\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\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\nclass OrbitControls extends EventDispatcher {\n constructor(object, domElement) {\n super();\n if (domElement === undefined)\n console.warn('THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.');\n // if ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n this.object = object;\n this.domElement = domElement;\n this.domElement.style.touchAction = 'none'; // disable touch scroll\n // Set to false to disable this control\n this.enabled = true;\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new Vector3();\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0;\n this.maxDistance = Infinity;\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0;\n this.maxZoom = Infinity;\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0; // radians\n this.maxPolarAngle = Math.PI; // radians\n // How far you can orbit horizontally, upper and lower limits.\n // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n this.minAzimuthAngle = -Infinity; // radians\n this.maxAzimuthAngle = Infinity; // radians\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false;\n this.dampingFactor = 0.05;\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true;\n this.zoomSpeed = 1.0;\n // Set to false to disable rotating\n this.enableRotate = true;\n this.rotateSpeed = 1.0;\n // Set to false to disable panning\n this.enablePan = true;\n this.panSpeed = 1.0;\n this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n this.keyPanSpeed = 7.0; // pixels moved per arrow key push\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = false;\n this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n // The four arrow keys\n this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n // Mouse buttons\n this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n // Touch fingers\n this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n // for reset\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom;\n // the target DOM element for key events\n this._domElementKeyEvents = null;\n //\n // public methods\n //\n this.getPolarAngle = function () {\n return spherical.phi;\n };\n this.getAzimuthalAngle = function () {\n return spherical.theta;\n };\n this.getDistance = function () {\n return this.object.position.distanceTo(this.target);\n };\n this.listenToKeyEvents = function (domElement) {\n domElement.addEventListener('keydown', onKeyDown);\n this._domElementKeyEvents = domElement;\n };\n this.saveState = function () {\n scope.target0.copy(scope.target);\n scope.position0.copy(scope.object.position);\n scope.zoom0 = scope.object.zoom;\n };\n this.reset = function () {\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(_changeEvent);\n scope.update();\n state = STATE.NONE;\n };\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = function () {\n const offset = new Vector3();\n // so camera.up is the orbit axis\n const quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0));\n const quatInverse = quat.clone().invert();\n const lastPosition = new Vector3();\n const lastQuaternion = new Quaternion();\n const twoPI = 2 * Math.PI;\n return function update() {\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat);\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset);\n if (scope.autoRotate && state === STATE.NONE) {\n rotateLeft(getAutoRotationAngle());\n }\n if (scope.enableDamping) {\n spherical.theta += sphericalDelta.theta * scope.dampingFactor;\n spherical.phi += sphericalDelta.phi * scope.dampingFactor;\n }\n else {\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n }\n // restrict theta to be between desired limits\n let min = scope.minAzimuthAngle;\n let max = scope.maxAzimuthAngle;\n if (isFinite(min) && isFinite(max)) {\n if (min < -Math.PI)\n min += twoPI;\n else if (min > Math.PI)\n min -= twoPI;\n if (max < -Math.PI)\n max += twoPI;\n else if (max > Math.PI)\n max -= twoPI;\n if (min <= max) {\n spherical.theta = Math.max(min, Math.min(max, spherical.theta));\n }\n else {\n spherical.theta = (spherical.theta > (min + max) / 2) ?\n Math.max(min, spherical.theta) :\n Math.min(max, spherical.theta);\n }\n }\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n spherical.makeSafe();\n spherical.radius *= scale;\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\n // move target to panned location\n if (scope.enableDamping === true) {\n scope.target.addScaledVector(panOffset, scope.dampingFactor);\n }\n else {\n scope.target.add(panOffset);\n }\n offset.setFromSpherical(spherical);\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse);\n position.copy(scope.target).add(offset);\n scope.object.lookAt(scope.target);\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= (1 - scope.dampingFactor);\n sphericalDelta.phi *= (1 - scope.dampingFactor);\n panOffset.multiplyScalar(1 - scope.dampingFactor);\n }\n else {\n sphericalDelta.set(0, 0, 0);\n panOffset.set(0, 0, 0);\n }\n scale = 1;\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n if (zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n scope.dispatchEvent(_changeEvent);\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n return true;\n }\n return false;\n };\n }();\n this.dispose = function () {\n scope.domElement.removeEventListener('contextmenu', onContextMenu);\n scope.domElement.removeEventListener('pointerdown', onPointerDown);\n scope.domElement.removeEventListener('pointercancel', onPointerCancel);\n scope.domElement.removeEventListener('wheel', onMouseWheel);\n scope.domElement.removeEventListener('pointermove', onPointerMove);\n scope.domElement.removeEventListener('pointerup', onPointerUp);\n if (scope._domElementKeyEvents !== null) {\n scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown);\n }\n //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n };\n //\n // internals\n //\n const scope = this;\n const STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6\n };\n let state = STATE.NONE;\n const EPS = 0.000001;\n // current position in spherical coordinates\n const spherical = new Spherical();\n const sphericalDelta = new Spherical();\n let scale = 1;\n const panOffset = new Vector3();\n let zoomChanged = false;\n const rotateStart = new Vector2();\n const rotateEnd = new Vector2();\n const rotateDelta = new Vector2();\n const panStart = new Vector2();\n const panEnd = new Vector2();\n const panDelta = new Vector2();\n const dollyStart = new Vector2();\n const dollyEnd = new Vector2();\n const dollyDelta = new Vector2();\n const pointers = [];\n const pointerPositions = {};\n function getAutoRotationAngle() {\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed);\n }\n function rotateLeft(angle) {\n sphericalDelta.theta -= angle;\n }\n function rotateUp(angle) {\n sphericalDelta.phi -= angle;\n }\n const panLeft = function () {\n const v = new Vector3();\n return function panLeft(distance, objectMatrix) {\n v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n v.multiplyScalar(-distance);\n panOffset.add(v);\n };\n }();\n const panUp = function () {\n const v = new Vector3();\n return function panUp(distance, objectMatrix) {\n if (scope.screenSpacePanning === true) {\n v.setFromMatrixColumn(objectMatrix, 1);\n }\n else {\n v.setFromMatrixColumn(objectMatrix, 0);\n v.crossVectors(scope.object.up, v);\n }\n v.multiplyScalar(distance);\n panOffset.add(v);\n };\n }();\n // deltaX and deltaY are in pixels; right and down are positive\n const pan = function () {\n const offset = new Vector3();\n return function pan(deltaX, deltaY) {\n const element = scope.domElement;\n if (scope.object.isPerspectiveCamera) {\n // perspective\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n let targetDistance = offset.length();\n // half of the fov is center to top of screen\n targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);\n // we use only clientHeight here so aspect ratio does not distort speed\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n }\n else if (scope.object.isOrthographicCamera) {\n // orthographic\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n }\n else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n scope.enablePan = false;\n }\n };\n }();\n function dollyOut(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale;\n }\n else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n }\n else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n }\n function dollyIn(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale;\n }\n else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n }\n else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n }\n //\n // event callbacks - update the object state\n //\n function handleMouseDownRotate(event) {\n rotateStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownDolly(event) {\n dollyStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownPan(event) {\n panStart.set(event.clientX, event.clientY);\n }\n function handleMouseMoveRotate(event) {\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n scope.update();\n }\n function handleMouseMoveDolly(event) {\n dollyEnd.set(event.clientX, event.clientY);\n dollyDelta.subVectors(dollyEnd, dollyStart);\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale());\n }\n else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale());\n }\n dollyStart.copy(dollyEnd);\n scope.update();\n }\n function handleMouseMovePan(event) {\n panEnd.set(event.clientX, event.clientY);\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n scope.update();\n }\n function handleMouseUp( /*event*/) {\n // no-op\n }\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyIn(getZoomScale());\n }\n else if (event.deltaY > 0) {\n dollyOut(getZoomScale());\n }\n scope.update();\n }\n function handleKeyDown(event) {\n let needsUpdate = false;\n switch (event.code) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n }\n if (needsUpdate) {\n // prevent the browser from scrolling on cursor keys\n event.preventDefault();\n scope.update();\n }\n }\n function handleTouchStartRotate() {\n if (pointers.length === 1) {\n rotateStart.set(pointers[0].pageX, pointers[0].pageY);\n }\n else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n rotateStart.set(x, y);\n }\n }\n function handleTouchStartPan() {\n if (pointers.length === 1) {\n panStart.set(pointers[0].pageX, pointers[0].pageY);\n }\n else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n panStart.set(x, y);\n }\n }\n function handleTouchStartDolly() {\n const dx = pointers[0].pageX - pointers[1].pageX;\n const dy = pointers[0].pageY - pointers[1].pageY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyStart.set(0, distance);\n }\n function handleTouchStartDollyPan() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enablePan)\n handleTouchStartPan();\n }\n function handleTouchStartDollyRotate() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enableRotate)\n handleTouchStartRotate();\n }\n function handleTouchMoveRotate(event) {\n if (pointers.length == 1) {\n rotateEnd.set(event.pageX, event.pageY);\n }\n else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n rotateEnd.set(x, y);\n }\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n }\n function handleTouchMovePan(event) {\n if (pointers.length === 1) {\n panEnd.set(event.pageX, event.pageY);\n }\n else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n panEnd.set(x, y);\n }\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n }\n function handleTouchMoveDolly(event) {\n const position = getSecondPointerPosition(event);\n const dx = event.pageX - position.x;\n const dy = event.pageY - position.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyEnd.set(0, distance);\n dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\n dollyOut(dollyDelta.y);\n dollyStart.copy(dollyEnd);\n }\n function handleTouchMoveDollyPan(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enablePan)\n handleTouchMovePan(event);\n }\n function handleTouchMoveDollyRotate(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enableRotate)\n handleTouchMoveRotate(event);\n }\n function handleTouchEnd( /*event*/) {\n // no-op\n }\n //\n // event handlers - FSM: listen for events and reset state\n //\n function onPointerDown(event) {\n if (scope.enabled === false)\n return;\n if (pointers.length === 0) {\n scope.domElement.setPointerCapture(event.pointerId);\n scope.domElement.addEventListener('pointermove', onPointerMove);\n scope.domElement.addEventListener('pointerup', onPointerUp);\n }\n //\n addPointer(event);\n if (event.pointerType === 'touch') {\n onTouchStart(event);\n }\n else {\n onMouseDown(event);\n }\n }\n function onPointerMove(event) {\n if (scope.enabled === false)\n return;\n if (event.pointerType === 'touch') {\n onTouchMove(event);\n }\n else {\n onMouseMove(event);\n }\n }\n function onPointerUp(event) {\n if (scope.enabled === false)\n return;\n if (event.pointerType === 'touch') {\n onTouchEnd();\n }\n else {\n onMouseUp(event);\n }\n removePointer(event);\n //\n if (pointers.length === 0) {\n scope.domElement.releasePointerCapture(event.pointerId);\n scope.domElement.removeEventListener('pointermove', onPointerMove);\n scope.domElement.removeEventListener('pointerup', onPointerUp);\n }\n }\n function onPointerCancel(event) {\n removePointer(event);\n }\n function onMouseDown(event) {\n let mouseAction;\n switch (event.button) {\n case 0:\n mouseAction = scope.mouseButtons.LEFT;\n break;\n case 1:\n mouseAction = scope.mouseButtons.MIDDLE;\n break;\n case 2:\n mouseAction = scope.mouseButtons.RIGHT;\n break;\n default:\n mouseAction = -1;\n }\n switch (mouseAction) {\n case MOUSE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseDownDolly(event);\n state = STATE.DOLLY;\n break;\n case MOUSE.ROTATE:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n else {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n break;\n case MOUSE.PAN:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n else {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onMouseMove(event) {\n if (scope.enabled === false)\n return;\n switch (state) {\n case STATE.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleMouseMoveRotate(event);\n break;\n case STATE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseMoveDolly(event);\n break;\n case STATE.PAN:\n if (scope.enablePan === false)\n return;\n handleMouseMovePan(event);\n break;\n }\n }\n function onMouseUp(event) {\n handleMouseUp(event);\n scope.dispatchEvent(_endEvent);\n state = STATE.NONE;\n }\n function onMouseWheel(event) {\n if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE))\n return;\n event.preventDefault();\n scope.dispatchEvent(_startEvent);\n handleMouseWheel(event);\n scope.dispatchEvent(_endEvent);\n }\n function onKeyDown(event) {\n if (scope.enabled === false || scope.enablePan === false)\n return;\n handleKeyDown(event);\n }\n function onTouchStart(event) {\n trackPointer(event);\n switch (pointers.length) {\n case 1:\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchStartRotate();\n state = STATE.TOUCH_ROTATE;\n break;\n case TOUCH.PAN:\n if (scope.enablePan === false)\n return;\n handleTouchStartPan();\n state = STATE.TOUCH_PAN;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n case 2:\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchStartDollyPan();\n state = STATE.TOUCH_DOLLY_PAN;\n break;\n case TOUCH.DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchStartDollyRotate();\n state = STATE.TOUCH_DOLLY_ROTATE;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onTouchMove(event) {\n trackPointer(event);\n switch (state) {\n case STATE.TOUCH_ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchMoveRotate(event);\n scope.update();\n break;\n case STATE.TOUCH_PAN:\n if (scope.enablePan === false)\n return;\n handleTouchMovePan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchMoveDollyPan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchMoveDollyRotate(event);\n scope.update();\n break;\n default:\n state = STATE.NONE;\n }\n }\n function onTouchEnd(event) {\n handleTouchEnd(event);\n scope.dispatchEvent(_endEvent);\n state = STATE.NONE;\n }\n function onContextMenu(event) {\n if (scope.enabled === false)\n return;\n event.preventDefault();\n }\n function addPointer(event) {\n pointers.push(event);\n }\n function removePointer(event) {\n delete pointerPositions[event.pointerId];\n for (let i = 0; i < pointers.length; i++) {\n if (pointers[i].pointerId == event.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n }\n function trackPointer(event) {\n let position = pointerPositions[event.pointerId];\n if (position === undefined) {\n position = new Vector2();\n pointerPositions[event.pointerId] = position;\n }\n position.set(event.pageX, event.pageY);\n }\n function getSecondPointerPosition(event) {\n const pointer = (event.pointerId === pointers[0].pointerId) ? pointers[1] : pointers[0];\n return pointerPositions[pointer.pointerId];\n }\n //\n scope.domElement.addEventListener('contextmenu', onContextMenu);\n scope.domElement.addEventListener('pointerdown', onPointerDown);\n scope.domElement.addEventListener('pointercancel', onPointerCancel);\n scope.domElement.addEventListener('wheel', onMouseWheel, { passive: false });\n // force an update at start\n this.update();\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\nclass MapControls extends OrbitControls {\n constructor(object, domElement) {\n super(object, domElement);\n this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n this.mouseButtons.LEFT = MOUSE.PAN;\n this.mouseButtons.RIGHT = MOUSE.ROTATE;\n this.touches.ONE = TOUCH.PAN;\n this.touches.TWO = TOUCH.DOLLY_ROTATE;\n }\n}\nexport { OrbitControls, MapControls };\n//# sourceMappingURL=OrbitControls.js.map","import { log, loge, logw, Resource } from \"doric\";\nexport const console = {\n error: (...args) => {\n loge(args);\n },\n warn: (...args) => {\n logw(args);\n },\n log: (...args) => {\n log(args);\n },\n};\nexport class FakeResource extends Resource {\n constructor(type, identifier) {\n super(type, identifier);\n }\n}\n//# sourceMappingURL=utils.js.map","import { Resource, resourceLoader } from \"doric\";\nimport { Cache, Loader } from \"three\";\nimport { FakeResource } from \"../utils\";\nconst loading = {};\nexport class FileLoader extends Loader {\n constructor(context, manager) {\n super(manager);\n this.context = context;\n }\n load(res, onLoad, onProgress, onError) {\n let url = res instanceof Resource ? res.identifier : res.url;\n if (url === undefined)\n url = \"\";\n if (this.path !== undefined)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const cached = Cache.get(url);\n if (cached !== undefined) {\n this.manager.itemStart(url);\n setTimeout(() => {\n if (onLoad)\n onLoad(cached);\n this.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n // Check if request is duplicate\n if (loading[url] !== undefined) {\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError,\n });\n return;\n }\n // Initialise array for duplicate requests\n loading[url] = [];\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError,\n });\n // start the fetch\n let loadingResource;\n if (res instanceof Resource) {\n loadingResource = res;\n }\n else {\n loadingResource = new FakeResource(res.type, url);\n }\n resourceLoader(this.context)\n .load(loadingResource)\n .then((data) => {\n // Add to cache only on HTTP success, so that we do not cache\n // error response bodies as proper responses to requests.\n Cache.add(url, data);\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onLoad)\n callback.onLoad(data);\n }\n this.manager.itemEnd(url);\n })\n .catch((reason) => {\n // Abort errors and other errors are handled the same\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onError)\n callback.onError(reason);\n }\n this.manager.itemError(url);\n this.manager.itemEnd(url);\n });\n this.manager.itemStart(url);\n }\n setResponseType(value) {\n //@ts-ignore\n this.responseType = value;\n return this;\n }\n setMimeType(value) {\n //@ts-ignore\n this.mimeType = value;\n return this;\n }\n}\n//# sourceMappingURL=FileLoader.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { imageDecoder, } from \"doric\";\nimport THREE, { Loader } from \"three\";\nimport { FakeResource as UnifiedResource } from \"../utils\";\nexport class TextureLoader extends Loader {\n constructor(context, manager) {\n super(manager);\n this.context = context;\n }\n load(res, onLoad, onProgress, onError) {\n let texture = new THREE.DataTexture();\n texture.format = THREE.RGBAFormat;\n const url = res.url;\n let link;\n if (this.path !== \"\" && this.path !== undefined) {\n link = this.path + url;\n }\n else {\n link = url;\n }\n const assetsResource = new UnifiedResource(res.type, link);\n const context = this.context;\n (function () {\n return __awaiter(this, void 0, void 0, function* () {\n const imageInfo = yield imageDecoder(context).getImageInfo(assetsResource);\n const imagePixels = yield imageDecoder(context).decodeToPixels(assetsResource);\n texture.image = {\n data: new Uint8ClampedArray(imagePixels),\n width: imageInfo.width,\n height: imageInfo.height,\n };\n texture.needsUpdate = true;\n if (onLoad !== undefined) {\n onLoad(texture);\n }\n });\n })();\n return texture;\n }\n}\n//# sourceMappingURL=TextureLoader.js.map","import { AnimationClip, Bone, Box3, BufferAttribute, BufferGeometry, ClampToEdgeWrapping, Color, DirectionalLight, DoubleSide, FrontSide, Group, ImageBitmapLoader, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, Line, LineBasicMaterial, LineLoop, LineSegments, LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoaderUtils, Material, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MirroredRepeatWrapping, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NumberKeyframeTrack, Object3D, OrthographicCamera, PerspectiveCamera, PointLight, Points, PointsMaterial, PropertyBinding, Quaternion, QuaternionKeyframeTrack, RepeatWrapping, Skeleton, SkinnedMesh, Sphere, SpotLight, TangentSpaceNormalMap, Texture, TriangleFanDrawMode, TriangleStripDrawMode, Vector2, Vector3, VectorKeyframeTrack, sRGBEncoding, } from \"three\";\nimport { console } from \"../utils\";\nimport { FileLoader } from \"./FileLoader\";\nimport { TextureLoader } from \"./TextureLoader\";\nexport class GLTFLoader extends Loader {\n constructor(doricContext, manager) {\n super(manager);\n this.doricContext = doricContext;\n this.dracoLoader = null;\n this.ktx2Loader = null;\n this.meshoptDecoder = null;\n this.pluginCallbacks = [];\n this.register(function (parser) {\n return new GLTFMaterialsClearcoatExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureBasisUExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureWebPExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSheenExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsTransmissionExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsVolumeExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsIorExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSpecularExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFLightsExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMeshoptCompression(parser);\n });\n }\n load(resource, onLoad, onProgress, onError) {\n const scope = this;\n const url = resource.identifier;\n let resourcePath;\n if (this.resourcePath !== \"\") {\n resourcePath = this.resourcePath;\n }\n else if (this.path !== \"\") {\n resourcePath = this.path;\n }\n else {\n resourcePath = LoaderUtils.extractUrlBase(url);\n }\n // Tells the LoadingManager to track an extra item, which resolves after\n // the model is fully loaded. This means the count of items loaded will\n // be incorrect, but ensures manager.onLoad() does not fire early.\n this.manager.itemStart(url);\n const _onError = function (e) {\n if (onError) {\n onError(e);\n }\n else {\n console.error(e);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n const loader = new FileLoader(this.doricContext, this.manager);\n loader.setPath(this.path);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(resource, function (data) {\n try {\n scope.parse(data, resource.type, resourcePath, function (gltf) {\n onLoad(gltf);\n scope.manager.itemEnd(url);\n }, _onError);\n }\n catch (e) {\n _onError(e);\n }\n }, onProgress, _onError);\n }\n setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n }\n setDDSLoader() {\n throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n }\n setKTX2Loader(ktx2Loader) {\n this.ktx2Loader = ktx2Loader;\n return this;\n }\n setMeshoptDecoder(meshoptDecoder) {\n this.meshoptDecoder = meshoptDecoder;\n return this;\n }\n register(callback) {\n if (this.pluginCallbacks.indexOf(callback) === -1) {\n this.pluginCallbacks.push(callback);\n }\n return this;\n }\n unregister(callback) {\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n }\n return this;\n }\n parse(data, resType, path, onLoad, onError) {\n let content;\n const extensions = {};\n const plugins = {};\n if (typeof data === \"string\") {\n content = data;\n }\n else {\n const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n }\n catch (error) {\n if (onError)\n onError(error);\n return;\n }\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n }\n else {\n content = LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n const json = JSON.parse(content);\n if (json.asset === undefined || json.asset.version[0] < 2) {\n if (onError)\n onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));\n return;\n }\n const parser = new GLTFParser(this.doricContext, json, {\n path: path || this.resourcePath || \"\",\n crossOrigin: this.crossOrigin,\n requestHeader: this.requestHeader,\n manager: this.manager,\n ktx2Loader: this.ktx2Loader,\n meshoptDecoder: this.meshoptDecoder,\n resType: resType,\n });\n parser.fileLoader.setRequestHeader(this.requestHeader);\n for (let i = 0; i < this.pluginCallbacks.length; i++) {\n const plugin = this.pluginCallbacks[i](parser);\n plugins[plugin.name] = plugin;\n // Workaround to avoid determining as unknown extension\n // in addUnknownExtensionsToUserData().\n // Remove this workaround if we move all the existing\n // extension handlers to plugin system\n extensions[plugin.name] = true;\n }\n if (json.extensionsUsed) {\n for (let i = 0; i < json.extensionsUsed.length; ++i) {\n const extensionName = json.extensionsUsed[i];\n const extensionsRequired = json.extensionsRequired || [];\n switch (extensionName) {\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n break;\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] =\n new GLTFMaterialsPbrSpecularGlossinessExtension();\n break;\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[extensionName] = new GLTFTextureTransformExtension();\n break;\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\n break;\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0 &&\n plugins[extensionName] === undefined) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n }\n }\n }\n parser.setExtensions(extensions);\n parser.setPlugins(plugins);\n parser.parse(onLoad, onError);\n }\n parseAsync(data, path) {\n const scope = this;\n return new Promise(function (resolve, reject) {\n scope.parse(data, path, resolve, reject);\n });\n }\n}\n/* GLTFREGISTRY */\nfunction GLTFRegistry() {\n let objects = {};\n return {\n get: function (key) {\n return objects[key];\n },\n add: function (key, object) {\n objects[key] = object;\n },\n remove: function (key) {\n delete objects[key];\n },\n removeAll: function () {\n objects = {};\n },\n };\n}\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\nconst EXTENSIONS = {\n KHR_BINARY_GLTF: \"KHR_binary_glTF\",\n KHR_DRACO_MESH_COMPRESSION: \"KHR_draco_mesh_compression\",\n KHR_LIGHTS_PUNCTUAL: \"KHR_lights_punctual\",\n KHR_MATERIALS_CLEARCOAT: \"KHR_materials_clearcoat\",\n KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: \"KHR_materials_pbrSpecularGlossiness\",\n KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\",\n};\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n // Object3D instance caches\n this.cache = { refs: {}, uses: {} };\n }\n _markDefs() {\n const parser = this.parser;\n const nodeDefs = this.parser.json.nodes || [];\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.extensions &&\n nodeDef.extensions[this.name] &&\n nodeDef.extensions[this.name].light !== undefined) {\n parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n }\n }\n }\n _loadLight(lightIndex) {\n const parser = this.parser;\n const cacheKey = \"light:\" + lightIndex;\n let dependency = parser.cache.get(cacheKey);\n if (dependency)\n return dependency;\n const json = parser.json;\n const extensions = (json.extensions && json.extensions[this.name]) || {};\n const lightDefs = extensions.lights || [];\n const lightDef = lightDefs[lightIndex];\n let lightNode;\n const color = new Color(0xffffff);\n if (lightDef.color !== undefined)\n color.fromArray(lightDef.color);\n const range = lightDef.range !== undefined ? lightDef.range : 0;\n switch (lightDef.type) {\n case \"directional\":\n lightNode = new DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n case \"point\":\n lightNode = new PointLight(color);\n lightNode.distance = range;\n break;\n case \"spot\":\n lightNode = new SpotLight(color);\n lightNode.distance = range;\n // Handle spotlight properties.\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle =\n lightDef.spot.innerConeAngle !== undefined\n ? lightDef.spot.innerConeAngle\n : 0;\n lightDef.spot.outerConeAngle =\n lightDef.spot.outerConeAngle !== undefined\n ? lightDef.spot.outerConeAngle\n : Math.PI / 4.0;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra =\n 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n default:\n throw new Error(\"THREE.GLTFLoader: Unexpected light type: \" + lightDef.type);\n }\n // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n // here, because node-level parsing will only override position if explicitly specified.\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== undefined)\n lightNode.intensity = lightDef.intensity;\n lightNode.name = parser.createUniqueName(lightDef.name || \"light_\" + lightIndex);\n dependency = Promise.resolve(lightNode);\n parser.cache.add(cacheKey, dependency);\n return dependency;\n }\n createNodeAttachment(nodeIndex) {\n const self = this;\n const parser = this.parser;\n const json = parser.json;\n const nodeDef = json.nodes[nodeIndex];\n const lightDef = (nodeDef.extensions && nodeDef.extensions[this.name]) || {};\n const lightIndex = lightDef.light;\n if (lightIndex === undefined)\n return null;\n return this._loadLight(lightIndex).then(function (light) {\n return parser._getNodeRef(self.cache, lightIndex, light);\n });\n }\n}\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n getMaterialType() {\n return MeshBasicMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pending = [];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const metallicRoughness = materialDef.pbrMetallicRoughness;\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n }\n return Promise.all(pending);\n }\n}\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.clearcoatFactor !== undefined) {\n materialParams.clearcoat = extension.clearcoatFactor;\n }\n if (extension.clearcoatTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatMap\", extension.clearcoatTexture));\n }\n if (extension.clearcoatRoughnessFactor !== undefined) {\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n }\n if (extension.clearcoatRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatRoughnessMap\", extension.clearcoatRoughnessTexture));\n }\n if (extension.clearcoatNormalTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatNormalMap\", extension.clearcoatNormalTexture));\n if (extension.clearcoatNormalTexture.scale !== undefined) {\n const scale = extension.clearcoatNormalTexture.scale;\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n }\n }\n return Promise.all(pending);\n }\n}\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n materialParams.sheenColor = new Color(0, 0, 0);\n materialParams.sheenRoughness = 0;\n materialParams.sheen = 1;\n const extension = materialDef.extensions[this.name];\n if (extension.sheenColorFactor !== undefined) {\n materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n }\n if (extension.sheenRoughnessFactor !== undefined) {\n materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n }\n if (extension.sheenColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"sheenColorMap\", extension.sheenColorTexture));\n }\n if (extension.sheenRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"sheenRoughnessMap\", extension.sheenRoughnessTexture));\n }\n return Promise.all(pending);\n }\n}\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.transmissionFactor !== undefined) {\n materialParams.transmission = extension.transmissionFactor;\n }\n if (extension.transmissionTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"transmissionMap\", extension.transmissionTexture));\n }\n return Promise.all(pending);\n }\n}\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.thickness =\n extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n if (extension.thicknessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"thicknessMap\", extension.thicknessTexture));\n }\n materialParams.attenuationDistance = extension.attenuationDistance || 0;\n const colorArray = extension.attenuationColor || [1, 1, 1];\n materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n return Promise.all(pending);\n }\n}\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const extension = materialDef.extensions[this.name];\n materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n return Promise.resolve();\n }\n}\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.specularIntensity =\n extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n if (extension.specularTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"specularIntensityMap\", extension.specularTexture));\n }\n const colorArray = extension.specularColorFactor || [1, 1, 1];\n materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n if (extension.specularColorTexture !== undefined) {\n pending.push(parser\n .assignTexture(materialParams, \"specularColorMap\", extension.specularColorTexture)\n .then(function (texture) {\n texture.encoding = sRGBEncoding;\n }));\n }\n return Promise.all(pending);\n }\n}\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n }\n loadTexture(textureIndex) {\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n return null;\n }\n const extension = textureDef.extensions[this.name];\n const source = json.images[extension.source];\n const loader = parser.options.ktx2Loader;\n if (!loader) {\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");\n }\n else {\n // Assumes that the extension is optional and that a fallback texture is present\n return null;\n }\n }\n return parser.loadTextureImage(textureIndex, source, loader);\n }\n}\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n this.isSupported = null;\n }\n loadTexture(textureIndex) {\n const name = this.name;\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[name]) {\n return null;\n }\n const extension = textureDef.extensions[name];\n const source = json.images[extension.source];\n let loader = parser.textureLoader;\n if (source.uri) {\n const handler = parser.options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.detectSupport().then(function (isSupported) {\n if (isSupported)\n return parser.loadTextureImage(textureIndex, source, loader);\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");\n }\n // Fall back to PNG or JPEG.\n return parser.loadTexture(textureIndex);\n });\n }\n detectSupport() {\n if (!this.isSupported) {\n this.isSupported = new Promise(function (resolve) {\n const image = new Image();\n // Lossy test image. Support for lossy images doesn't guarantee support for all\n // WebP images, unfortunately.\n image.src =\n \"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";\n image.onload = image.onerror = function () {\n resolve(image.height === 1);\n };\n });\n }\n return this.isSupported;\n }\n}\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n constructor(parser) {\n this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n this.parser = parser;\n }\n loadBufferView(index) {\n const json = this.parser.json;\n const bufferView = json.bufferViews[index];\n if (bufferView.extensions && bufferView.extensions[this.name]) {\n const extensionDef = bufferView.extensions[this.name];\n const buffer = this.parser.getDependency(\"buffer\", extensionDef.buffer);\n const decoder = this.parser.options.meshoptDecoder;\n if (!decoder || !decoder.supported) {\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");\n }\n else {\n // Assumes that the extension is optional and that fallback buffer data is present\n return null;\n }\n }\n return Promise.all([buffer, decoder.ready]).then(function (res) {\n const byteOffset = extensionDef.byteOffset || 0;\n const byteLength = extensionDef.byteLength || 0;\n const count = extensionDef.count;\n const stride = extensionDef.byteStride;\n const result = new ArrayBuffer(count * stride);\n const source = new Uint8Array(res[0], byteOffset, byteLength);\n decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n return result;\n });\n }\n else {\n return null;\n }\n }\n}\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4e4f534a, BIN: 0x004e4942 };\nclass GLTFBinaryExtension {\n constructor(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true),\n };\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");\n }\n else if (this.header.version < 2.0) {\n throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");\n }\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n while (chunkIndex < chunkContentsLength) {\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n const chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = LoaderUtils.decodeText(contentArray);\n }\n else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n }\n // Clients must ignore chunks with unknown types.\n chunkIndex += chunkLength;\n }\n if (this.content === null) {\n throw new Error(\"THREE.GLTFLoader: JSON content not found.\");\n }\n }\n}\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n constructor(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");\n }\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n this.dracoLoader.preload();\n }\n decodePrimitive(primitive, parser) {\n const json = this.json;\n const dracoLoader = this.dracoLoader;\n const bufferViewIndex = primitive.extensions[this.name].bufferView;\n const gltfAttributeMap = primitive.extensions[this.name].attributes;\n const threeAttributeMap = {};\n const attributeNormalizedMap = {};\n const attributeTypeMap = {};\n for (const attributeName in gltfAttributeMap) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n for (const attributeName in primitive.attributes) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n if (gltfAttributeMap[attributeName] !== undefined) {\n const accessorDef = json.accessors[primitive.attributes[attributeName]];\n const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] =\n accessorDef.normalized === true;\n }\n }\n return parser\n .getDependency(\"bufferView\", bufferViewIndex)\n .then(function (bufferView) {\n return new Promise(function (resolve) {\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n for (const attributeName in geometry.attributes) {\n const attribute = geometry.attributes[attributeName];\n const normalized = attributeNormalizedMap[attributeName];\n if (normalized !== undefined)\n attribute.normalized = normalized;\n }\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n }\n}\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n extendTexture(texture, transform) {\n if (transform.texCoord !== undefined) {\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' +\n this.name +\n '\" extension not yet supported.');\n }\n if (transform.offset === undefined &&\n transform.rotation === undefined &&\n transform.scale === undefined) {\n // See https://github.com/mrdoob/three.js/issues/21819.\n return texture;\n }\n texture = texture.clone();\n if (transform.offset !== undefined) {\n texture.offset.fromArray(transform.offset);\n }\n if (transform.rotation !== undefined) {\n texture.rotation = transform.rotation;\n }\n if (transform.scale !== undefined) {\n texture.repeat.fromArray(transform.scale);\n }\n texture.needsUpdate = true;\n return texture;\n }\n}\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n constructor(params) {\n super();\n this.isGLTFSpecularGlossinessMaterial = true;\n //various chunks that need replacing\n const specularMapParsFragmentChunk = [\n \"#ifdef USE_SPECULARMAP\",\n \"\tuniform sampler2D specularMap;\",\n \"#endif\",\n ].join(\"\\n\");\n const glossinessMapParsFragmentChunk = [\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tuniform sampler2D glossinessMap;\",\n \"#endif\",\n ].join(\"\\n\");\n const specularMapFragmentChunk = [\n \"vec3 specularFactor = specular;\",\n \"#ifdef USE_SPECULARMAP\",\n \"\tvec4 texelSpecular = texture2D( specularMap, vUv );\",\n \"\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tspecularFactor *= texelSpecular.rgb;\",\n \"#endif\",\n ].join(\"\\n\");\n const glossinessMapFragmentChunk = [\n \"float glossinessFactor = glossiness;\",\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );\",\n \"\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tglossinessFactor *= texelGlossiness.a;\",\n \"#endif\",\n ].join(\"\\n\");\n const lightPhysicalFragmentChunk = [\n \"PhysicalMaterial material;\",\n \"material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );\",\n \"vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\",\n \"float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\",\n \"material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.\",\n \"material.roughness += geometryRoughness;\",\n \"material.roughness = min( material.roughness, 1.0 );\",\n \"material.specularColor = specularFactor;\",\n ].join(\"\\n\");\n const uniforms = {\n specular: { value: new Color().setHex(0xffffff) },\n glossiness: { value: 1 },\n specularMap: { value: null },\n glossinessMap: { value: null },\n };\n this._extraUniforms = uniforms;\n this.onBeforeCompile = function (shader) {\n for (const uniformName in uniforms) {\n shader.uniforms[uniformName] = uniforms[uniformName];\n }\n shader.fragmentShader = shader.fragmentShader\n .replace(\"uniform float roughness;\", \"uniform vec3 specular;\")\n .replace(\"uniform float metalness;\", \"uniform float glossiness;\")\n .replace(\"#include \", specularMapParsFragmentChunk)\n .replace(\"#include \", glossinessMapParsFragmentChunk)\n .replace(\"#include \", specularMapFragmentChunk)\n .replace(\"#include \", glossinessMapFragmentChunk)\n .replace(\"#include \", lightPhysicalFragmentChunk);\n };\n Object.defineProperties(this, {\n specular: {\n get: function () {\n return uniforms.specular.value;\n },\n set: function (v) {\n uniforms.specular.value = v;\n },\n },\n specularMap: {\n get: function () {\n return uniforms.specularMap.value;\n },\n set: function (v) {\n uniforms.specularMap.value = v;\n if (v) {\n this.defines.USE_SPECULARMAP = \"\"; // USE_UV is set by the renderer for specular maps\n }\n else {\n delete this.defines.USE_SPECULARMAP;\n }\n },\n },\n glossiness: {\n get: function () {\n return uniforms.glossiness.value;\n },\n set: function (v) {\n uniforms.glossiness.value = v;\n },\n },\n glossinessMap: {\n get: function () {\n return uniforms.glossinessMap.value;\n },\n set: function (v) {\n uniforms.glossinessMap.value = v;\n if (v) {\n this.defines.USE_GLOSSINESSMAP = \"\";\n this.defines.USE_UV = \"\";\n }\n else {\n delete this.defines.USE_GLOSSINESSMAP;\n delete this.defines.USE_UV;\n }\n },\n },\n });\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n this.setValues(params);\n }\n copy(source) {\n super.copy(source);\n this.specularMap = source.specularMap;\n this.specular.copy(source.specular);\n this.glossinessMap = source.glossinessMap;\n this.glossiness = source.glossiness;\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n return this;\n }\n}\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n this.specularGlossinessParams = [\n \"color\",\n \"map\",\n \"lightMap\",\n \"lightMapIntensity\",\n \"aoMap\",\n \"aoMapIntensity\",\n \"emissive\",\n \"emissiveIntensity\",\n \"emissiveMap\",\n \"bumpMap\",\n \"bumpScale\",\n \"normalMap\",\n \"normalMapType\",\n \"displacementMap\",\n \"displacementScale\",\n \"displacementBias\",\n \"specularMap\",\n \"specular\",\n \"glossinessMap\",\n \"glossiness\",\n \"alphaMap\",\n \"envMap\",\n \"envMapIntensity\",\n \"refractionRatio\",\n ];\n }\n getMaterialType() {\n return GLTFMeshStandardSGMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pbrSpecularGlossiness = materialDef.extensions[this.name];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const pending = [];\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n const array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", pbrSpecularGlossiness.diffuseTexture));\n }\n materialParams.emissive = new Color(0.0, 0.0, 0.0);\n materialParams.glossiness =\n pbrSpecularGlossiness.glossinessFactor !== undefined\n ? pbrSpecularGlossiness.glossinessFactor\n : 1.0;\n materialParams.specular = new Color(1.0, 1.0, 1.0);\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, \"glossinessMap\", specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, \"specularMap\", specGlossMapDef));\n }\n return Promise.all(pending);\n }\n createMaterial(materialParams) {\n const material = new GLTFMeshStandardSGMaterial(materialParams);\n material.fog = true;\n material.color = materialParams.color;\n material.map = materialParams.map === undefined ? null : materialParams.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap =\n materialParams.aoMap === undefined ? null : materialParams.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = materialParams.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap =\n materialParams.emissiveMap === undefined\n ? null\n : materialParams.emissiveMap;\n material.bumpMap =\n materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n material.bumpScale = 1;\n material.normalMap =\n materialParams.normalMap === undefined ? null : materialParams.normalMap;\n material.normalMapType = TangentSpaceNormalMap;\n if (materialParams.normalScale)\n material.normalScale = materialParams.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap =\n materialParams.specularMap === undefined\n ? null\n : materialParams.specularMap;\n material.specular = materialParams.specular;\n material.glossinessMap =\n materialParams.glossinessMap === undefined\n ? null\n : materialParams.glossinessMap;\n material.glossiness = materialParams.glossiness;\n material.alphaMap = null;\n material.envMap =\n materialParams.envMap === undefined ? null : materialParams.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n return material;\n }\n}\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n }\n}\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n copySampleValue_(index) {\n // Copies a sample value to the result buffer. See description of glTF\n // CUBICSPLINE values layout in interpolate_() function below.\n const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize;\n for (let i = 0; i !== valueSize; i++) {\n result[i] = values[offset + i];\n }\n return result;\n }\n}\nGLTFCubicSplineInterpolant.prototype.beforeStart_ =\n GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.afterEnd_ =\n GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\n const result = this.resultBuffer;\n const values = this.sampleValues;\n const stride = this.valueSize;\n const stride2 = stride * 2;\n const stride3 = stride * 3;\n const td = t1 - t0;\n const p = (t - t0) / td;\n const pp = p * p;\n const ppp = pp * p;\n const offset1 = i1 * stride3;\n const offset0 = offset1 - stride3;\n const s2 = -2 * ppp + 3 * pp;\n const s3 = ppp - pp;\n const s0 = 1 - s2;\n const s1 = s3 - pp + p;\n // Layout of keyframe output values for CUBICSPLINE animations:\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n for (let i = 0; i !== stride; i++) {\n const p0 = values[offset0 + i + stride]; // splineVertex_k\n const m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\n const p1 = values[offset1 + i + stride]; // splineVertex_k+1\n const m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n }\n return result;\n};\nconst _q = new Quaternion();\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n interpolate_(i1, t0, t, t1) {\n const result = super.interpolate_(i1, t0, t, t1);\n _q.fromArray(result).normalize().toArray(result);\n return result;\n }\n}\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n/* CONSTANTS */\nconst WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123,\n};\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\nconst WEBGL_FILTERS = {\n 9728: NearestFilter,\n 9729: LinearFilter,\n 9984: NearestMipmapNearestFilter,\n 9985: LinearMipmapNearestFilter,\n 9986: NearestMipmapLinearFilter,\n 9987: LinearMipmapLinearFilter,\n};\nconst WEBGL_WRAPPINGS = {\n 33071: ClampToEdgeWrapping,\n 33648: MirroredRepeatWrapping,\n 10497: RepeatWrapping,\n};\nconst WEBGL_TYPE_SIZES = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16,\n};\nconst ATTRIBUTES = {\n POSITION: \"position\",\n NORMAL: \"normal\",\n TANGENT: \"tangent\",\n TEXCOORD_0: \"uv\",\n TEXCOORD_1: \"uv2\",\n COLOR_0: \"color\",\n WEIGHTS_0: \"skinWeight\",\n JOINTS_0: \"skinIndex\",\n};\nconst PATH_PROPERTIES = {\n scale: \"scale\",\n translation: \"position\",\n rotation: \"quaternion\",\n weights: \"morphTargetInfluences\",\n};\nconst INTERPOLATION = {\n CUBICSPLINE: undefined,\n // keyframe track will be initialized with a default interpolation type, then modified.\n LINEAR: InterpolateLinear,\n STEP: InterpolateDiscrete,\n};\nconst ALPHA_MODES = {\n OPAQUE: \"OPAQUE\",\n MASK: \"MASK\",\n BLEND: \"BLEND\",\n};\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial(cache) {\n if (cache[\"DefaultMaterial\"] === undefined) {\n cache[\"DefaultMaterial\"] = new MeshStandardMaterial({\n color: 0xffffff,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: FrontSide,\n });\n }\n return cache[\"DefaultMaterial\"];\n}\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n // Add unknown glTF extensions to an object's userData.\n for (const name in objectDef.extensions) {\n if (knownExtensions[name] === undefined) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n}\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== undefined) {\n if (typeof gltfDef.extras === \"object\") {\n Object.assign(object.userData, gltfDef.extras);\n }\n else {\n console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \" + gltfDef.extras);\n }\n }\n}\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addMorphTargets(geometry, targets, parser) {\n let hasMorphPosition = false;\n let hasMorphNormal = false;\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== undefined)\n hasMorphPosition = true;\n if (target.NORMAL !== undefined)\n hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal)\n break;\n }\n if (!hasMorphPosition && !hasMorphNormal)\n return Promise.resolve(geometry);\n const pendingPositionAccessors = [];\n const pendingNormalAccessors = [];\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (hasMorphPosition) {\n const pendingAccessor = target.POSITION !== undefined\n ? parser.getDependency(\"accessor\", target.POSITION)\n : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n if (hasMorphNormal) {\n const pendingAccessor = target.NORMAL !== undefined\n ? parser.getDependency(\"accessor\", target.NORMAL)\n : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n return Promise.all([\n Promise.all(pendingPositionAccessors),\n Promise.all(pendingNormalAccessors),\n ]).then(function (accessors) {\n const morphPositions = accessors[0];\n const morphNormals = accessors[1];\n if (hasMorphPosition)\n geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal)\n geometry.morphAttributes.normal = morphNormals;\n geometry.morphTargetsRelative = true;\n return geometry;\n });\n}\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n if (meshDef.weights !== undefined) {\n for (let i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n }\n // .extras has user-defined data, so check that .extras.targetNames is an array.\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n const targetNames = meshDef.extras.targetNames;\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n for (let i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n }\n else {\n console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\");\n }\n }\n}\nfunction createPrimitiveKey(primitiveDef) {\n const dracoExtension = primitiveDef.extensions &&\n primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n let geometryKey;\n if (dracoExtension) {\n geometryKey =\n \"draco:\" +\n dracoExtension.bufferView +\n \":\" +\n dracoExtension.indices +\n \":\" +\n createAttributesKey(dracoExtension.attributes);\n }\n else {\n geometryKey =\n primitiveDef.indices +\n \":\" +\n createAttributesKey(primitiveDef.attributes) +\n \":\" +\n primitiveDef.mode;\n }\n return geometryKey;\n}\nfunction createAttributesKey(attributes) {\n let attributesKey = \"\";\n const keys = Object.keys(attributes).sort();\n for (let i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + \":\" + attributes[keys[i]] + \";\";\n }\n return attributesKey;\n}\nfunction getNormalizedComponentScale(constructor) {\n // Reference:\n // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n switch (constructor) {\n case Int8Array:\n return 1 / 127;\n case Uint8Array:\n return 1 / 255;\n case Int16Array:\n return 1 / 32767;\n case Uint16Array:\n return 1 / 65535;\n default:\n throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\");\n }\n}\n/* GLTF PARSER */\nclass GLTFParser {\n constructor(doricContext, json = {}, options = {}) {\n this.doricContext = doricContext;\n this.json = json;\n this.extensions = {};\n this.plugins = {};\n this.options = options;\n // loader object cache\n this.cache = new GLTFRegistry();\n // associations between Three.js objects and glTF elements\n this.associations = new Map();\n // BufferGeometry caching\n this.primitiveCache = {};\n // Object3D instance caches\n this.meshCache = { refs: {}, uses: {} };\n this.cameraCache = { refs: {}, uses: {} };\n this.lightCache = { refs: {}, uses: {} };\n this.textureCache = {};\n // Track node names, to ensure no duplicates\n this.nodeNamesUsed = {};\n // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n // expensive work of uploading a texture to the GPU off the main thread.\n if (typeof createImageBitmap !== \"undefined\" &&\n /Firefox|^((?!chrome|android).)*safari/i.test(navigator.userAgent) ===\n false) {\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\n }\n else {\n this.textureLoader = new TextureLoader(this.doricContext, this.options.manager);\n }\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.textureLoader.setRequestHeader(this.options.requestHeader);\n this.fileLoader = new FileLoader(this.doricContext, this.options.manager);\n this.fileLoader.setResponseType(\"arraybuffer\");\n if (this.options.crossOrigin === \"use-credentials\") {\n this.fileLoader.setWithCredentials(true);\n }\n }\n setExtensions(extensions) {\n this.extensions = extensions;\n }\n setPlugins(plugins) {\n this.plugins = plugins;\n }\n parse(onLoad, onError) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n // Clear the loader cache\n this.cache.removeAll();\n // Mark the special nodes/meshes in json for efficient parse\n this._invokeAll(function (ext) {\n return ext._markDefs && ext._markDefs();\n });\n Promise.all(this._invokeAll(function (ext) {\n return ext.beforeRoot && ext.beforeRoot();\n }))\n .then(function () {\n return Promise.all([\n parser.getDependencies(\"scene\"),\n parser.getDependencies(\"animation\"),\n parser.getDependencies(\"camera\"),\n ]);\n })\n .then(function (dependencies) {\n const result = {\n scene: dependencies[0][json.scene || 0],\n scenes: dependencies[0],\n animations: dependencies[1],\n cameras: dependencies[2],\n asset: json.asset,\n parser: parser,\n userData: {},\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n assignExtrasToUserData(result, json);\n Promise.all(parser._invokeAll(function (ext) {\n return ext.afterRoot && ext.afterRoot(result);\n })).then(function () {\n onLoad(result);\n });\n })\n .catch(onError);\n }\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n _markDefs() {\n const nodeDefs = this.json.nodes || [];\n const skinDefs = this.json.skins || [];\n const meshDefs = this.json.meshes || [];\n // Nothing in the node definition indicates whether it is a Bone or an\n // Object3D. Use the skins' joint references to mark bones.\n for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n const joints = skinDefs[skinIndex].joints;\n for (let i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n }\n // Iterate over all nodes, marking references to shared resources,\n // as well as skeleton joints.\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.mesh !== undefined) {\n this._addNodeRef(this.meshCache, nodeDef.mesh);\n // Nothing in the mesh definition indicates whether it is\n // a SkinnedMesh or Mesh. Use the node's mesh reference\n // to mark SkinnedMesh if node has skin.\n if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n if (nodeDef.camera !== undefined) {\n this._addNodeRef(this.cameraCache, nodeDef.camera);\n }\n }\n }\n /**\n * Counts references to shared node / Object3D resources. These resources\n * can be reused, or \"instantiated\", at multiple nodes in the scene\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\n * Textures) can be reused directly and are not marked here.\n *\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n */\n _addNodeRef(cache, index) {\n if (index === undefined)\n return;\n if (cache.refs[index] === undefined) {\n cache.refs[index] = cache.uses[index] = 0;\n }\n cache.refs[index]++;\n }\n /** Returns a reference to a shared resource, cloning it if necessary. */\n _getNodeRef(cache, index, object) {\n if (cache.refs[index] <= 1)\n return object;\n const ref = object.clone();\n // Propagates mappings to the cloned object, prevents mappings on the\n // original object from being lost.\n const updateMappings = (original, clone) => {\n const mappings = this.associations.get(original);\n if (mappings != null) {\n this.associations.set(clone, mappings);\n }\n for (const [i, child] of original.children.entries()) {\n updateMappings(child, clone.children[i]);\n }\n };\n updateMappings(object, ref);\n ref.name += \"_instance_\" + cache.uses[index]++;\n return ref;\n }\n _invokeOne(func) {\n const extensions = Object.values(this.plugins);\n extensions.push(this);\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n return result;\n }\n return null;\n }\n _invokeAll(func) {\n const extensions = Object.values(this.plugins);\n extensions.unshift(this);\n const pending = [];\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n pending.push(result);\n }\n return pending;\n }\n /**\n * Requests the specified dependency asynchronously, with caching.\n * @param {string} type\n * @param {number} index\n * @return {Promise}\n */\n getDependency(type, index) {\n const cacheKey = type + \":\" + index;\n let dependency = this.cache.get(cacheKey);\n if (!dependency) {\n switch (type) {\n case \"scene\":\n dependency = this.loadScene(index);\n break;\n case \"node\":\n dependency = this.loadNode(index);\n break;\n case \"mesh\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadMesh && ext.loadMesh(index);\n });\n break;\n case \"accessor\":\n dependency = this.loadAccessor(index);\n break;\n case \"bufferView\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadBufferView && ext.loadBufferView(index);\n });\n break;\n case \"buffer\":\n dependency = this.loadBuffer(index);\n break;\n case \"material\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadMaterial && ext.loadMaterial(index);\n });\n break;\n case \"texture\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadTexture && ext.loadTexture(index);\n });\n break;\n case \"skin\":\n dependency = this.loadSkin(index);\n break;\n case \"animation\":\n dependency = this.loadAnimation(index);\n break;\n case \"camera\":\n dependency = this.loadCamera(index);\n break;\n default:\n throw new Error(\"Unknown type: \" + type);\n }\n this.cache.add(cacheKey, dependency);\n }\n return dependency;\n }\n /**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */\n getDependencies(type) {\n let dependencies = this.cache.get(type);\n if (!dependencies) {\n const parser = this;\n const defs = this.json[type + (type === \"mesh\" ? \"es\" : \"s\")] || [];\n dependencies = Promise.all(defs.map(function (def, index) {\n return parser.getDependency(type, index);\n }));\n this.cache.add(type, dependencies);\n }\n return dependencies;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */\n loadBuffer(bufferIndex) {\n const bufferDef = this.json.buffers[bufferIndex];\n const loader = this.fileLoader;\n if (bufferDef.type && bufferDef.type !== \"arraybuffer\") {\n throw new Error(\"THREE.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\");\n }\n // If present, GLB container is required to be the first buffer.\n if (bufferDef.uri === undefined && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n const options = this.options;\n return new Promise(function (resolve, reject) {\n loader.load({\n type: options.resType,\n url: LoaderUtils.resolveURL(bufferDef.uri, options.path),\n }, resolve, undefined, function () {\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */\n loadBufferView(bufferViewIndex) {\n const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency(\"buffer\", bufferViewDef.buffer).then(function (buffer) {\n const byteLength = bufferViewDef.byteLength || 0;\n const byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */\n loadAccessor(accessorIndex) {\n const parser = this;\n const json = this.json;\n const accessorDef = this.json.accessors[accessorIndex];\n if (accessorDef.bufferView === undefined &&\n accessorDef.sparse === undefined) {\n // Ignore empty accessors, which may be used to declare runtime\n // information about attributes coming from another source (e.g. Draco\n // compression extension).\n return Promise.resolve(null);\n }\n const pendingBufferViews = [];\n if (accessorDef.bufferView !== undefined) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.bufferView));\n }\n else {\n pendingBufferViews.push(null);\n }\n if (accessorDef.sparse !== undefined) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.values.bufferView));\n }\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\n const bufferView = bufferViews[0];\n const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n const itemBytes = elementBytes * itemSize;\n const byteOffset = accessorDef.byteOffset || 0;\n const byteStride = accessorDef.bufferView !== undefined\n ? json.bufferViews[accessorDef.bufferView].byteStride\n : undefined;\n const normalized = accessorDef.normalized === true;\n let array, bufferAttribute;\n // The buffer is not interleaved if the stride is the item size in bytes.\n if (byteStride && byteStride !== itemBytes) {\n // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n // This makes sure that IBA.count reflects accessor.count properly\n const ibSlice = Math.floor(byteOffset / byteStride);\n const ibCacheKey = \"InterleavedBuffer:\" +\n accessorDef.bufferView +\n \":\" +\n accessorDef.componentType +\n \":\" +\n ibSlice +\n \":\" +\n accessorDef.count;\n let ib = parser.cache.get(ibCacheKey);\n if (!ib) {\n array = new TypedArray(bufferView, ibSlice * byteStride, (accessorDef.count * byteStride) / elementBytes);\n // Integer parameters to IB/IBA are in array elements, not bytes.\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, (byteOffset % byteStride) / elementBytes, normalized);\n }\n else {\n if (bufferView === null) {\n array = new TypedArray(accessorDef.count * itemSize);\n }\n else {\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n }\n bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n }\n // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n if (accessorDef.sparse !== undefined) {\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n if (bufferView !== null) {\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n }\n for (let i = 0, il = sparseIndices.length; i < il; i++) {\n const index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2)\n bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3)\n bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4)\n bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5)\n throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");\n }\n }\n return bufferAttribute;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */\n loadTexture(textureIndex) {\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const source = json.images[textureDef.source];\n let loader = this.textureLoader;\n if (source.uri) {\n const handler = options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.loadTextureImage(textureIndex, source, loader);\n }\n loadTextureImage(textureIndex, source, loader) {\n const parser = this;\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const cacheKey = (source.uri || source.bufferView) + \":\" + textureDef.sampler;\n if (this.textureCache[cacheKey]) {\n // See https://github.com/mrdoob/three.js/issues/21559.\n return this.textureCache[cacheKey];\n }\n //const URL = self.URL || self.webkitURL;\n let sourceURI = source.uri || \"\";\n let isObjectURL = false;\n if (source.bufferView !== undefined) {\n // Load binary image data from bufferView, if provided.\n sourceURI = parser\n .getDependency(\"bufferView\", source.bufferView)\n .then(function (bufferView) {\n isObjectURL = true;\n const blob = new Blob([bufferView], { type: source.mimeType });\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n }\n else if (source.uri === undefined) {\n throw new Error(\"THREE.GLTFLoader: Image \" +\n textureIndex +\n \" is missing URI and bufferView\");\n }\n const promise = Promise.resolve(sourceURI)\n .then(function (sourceURI) {\n return new Promise(function (resolve, reject) {\n let onLoad = resolve;\n if (loader.isImageBitmapLoader === true) {\n onLoad = function (imageBitmap) {\n const texture = new Texture(imageBitmap);\n texture.needsUpdate = true;\n resolve(texture);\n };\n }\n loader.load({\n url: LoaderUtils.resolveURL(sourceURI, options.path),\n type: options.resType,\n }, onLoad, undefined, reject);\n });\n })\n .then(function (texture) {\n // Clean up resources and configure Texture.\n if (isObjectURL === true) {\n //URL.revokeObjectURL(sourceURI);\n }\n texture.flipY = false;\n if (textureDef.name)\n texture.name = textureDef.name;\n const samplers = json.samplers || {};\n const sampler = samplers[textureDef.sampler] || {};\n // texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n // texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n parser.associations.set(texture, { textures: textureIndex });\n return texture;\n })\n .catch(function () {\n console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n return null;\n });\n this.textureCache[cacheKey] = promise;\n return promise;\n }\n /**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */\n assignTexture(materialParams, mapName, mapDef) {\n const parser = this;\n return this.getDependency(\"texture\", mapDef.index).then(function (texture) {\n // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n // However, we will copy UV set 0 to UV set 1 on demand for aoMap\n if (mapDef.texCoord !== undefined &&\n mapDef.texCoord != 0 &&\n !(mapName === \"aoMap\" && mapDef.texCoord == 1)) {\n console.warn(\"THREE.GLTFLoader: Custom UV set \" +\n mapDef.texCoord +\n \" for texture \" +\n mapName +\n \" not yet supported.\");\n }\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n const transform = mapDef.extensions !== undefined\n ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]\n : undefined;\n if (transform) {\n const gltfReference = parser.associations.get(texture);\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n parser.associations.set(texture, gltfReference);\n }\n }\n materialParams[mapName] = texture;\n return texture;\n });\n }\n /**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accommodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {Object3D} mesh Mesh, Line, or Points instance.\n */\n assignFinalMaterial(mesh) {\n const geometry = mesh.geometry;\n let material = mesh.material;\n const useDerivativeTangents = geometry.attributes.tangent === undefined;\n const useVertexColors = geometry.attributes.color !== undefined;\n const useFlatShading = geometry.attributes.normal === undefined;\n if (mesh.isPoints) {\n const cacheKey = \"PointsMaterial:\" + material.uuid;\n let pointsMaterial = this.cache.get(cacheKey);\n if (!pointsMaterial) {\n pointsMaterial = new PointsMaterial();\n Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n this.cache.add(cacheKey, pointsMaterial);\n }\n material = pointsMaterial;\n }\n else if (mesh.isLine) {\n const cacheKey = \"LineBasicMaterial:\" + material.uuid;\n let lineMaterial = this.cache.get(cacheKey);\n if (!lineMaterial) {\n lineMaterial = new LineBasicMaterial();\n Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n this.cache.add(cacheKey, lineMaterial);\n }\n material = lineMaterial;\n }\n // Clone the material if it will be modified\n if (useDerivativeTangents || useVertexColors || useFlatShading) {\n let cacheKey = \"ClonedMaterial:\" + material.uuid + \":\";\n if (material.isGLTFSpecularGlossinessMaterial)\n cacheKey += \"specular-glossiness:\";\n if (useDerivativeTangents)\n cacheKey += \"derivative-tangents:\";\n if (useVertexColors)\n cacheKey += \"vertex-colors:\";\n if (useFlatShading)\n cacheKey += \"flat-shading:\";\n let cachedMaterial = this.cache.get(cacheKey);\n if (!cachedMaterial) {\n cachedMaterial = material.clone();\n if (useVertexColors)\n cachedMaterial.vertexColors = true;\n if (useFlatShading)\n cachedMaterial.flatShading = true;\n if (useDerivativeTangents) {\n // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n if (cachedMaterial.normalScale)\n cachedMaterial.normalScale.y *= -1;\n if (cachedMaterial.clearcoatNormalScale)\n cachedMaterial.clearcoatNormalScale.y *= -1;\n }\n this.cache.add(cacheKey, cachedMaterial);\n this.associations.set(cachedMaterial, this.associations.get(material));\n }\n material = cachedMaterial;\n }\n // workarounds for mesh and geometry\n if (material.aoMap &&\n geometry.attributes.uv2 === undefined &&\n geometry.attributes.uv !== undefined) {\n geometry.setAttribute(\"uv2\", geometry.attributes.uv);\n }\n mesh.material = material;\n }\n getMaterialType( /* materialIndex */) {\n return MeshStandardMaterial;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */\n loadMaterial(materialIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const materialDef = json.materials[materialIndex];\n let materialType;\n const materialParams = {};\n const materialExtensions = materialDef.extensions || {};\n const pending = [];\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n const sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n materialType = sgExtension.getMaterialType();\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n }\n else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n }\n else {\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n materialParams.metalness =\n metallicRoughness.metallicFactor !== undefined\n ? metallicRoughness.metallicFactor\n : 1.0;\n materialParams.roughness =\n metallicRoughness.roughnessFactor !== undefined\n ? metallicRoughness.roughnessFactor\n : 1.0;\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"metalnessMap\", metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, \"roughnessMap\", metallicRoughness.metallicRoughnessTexture));\n }\n materialType = this._invokeOne(function (ext) {\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\n });\n pending.push(Promise.all(this._invokeAll(function (ext) {\n return (ext.extendMaterialParams &&\n ext.extendMaterialParams(materialIndex, materialParams));\n })));\n }\n if (materialDef.doubleSided === true) {\n materialParams.side = DoubleSide;\n }\n const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true;\n // See: https://github.com/mrdoob/three.js/issues/17706\n materialParams.depthWrite = false;\n }\n else {\n materialParams.transparent = false;\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest =\n materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n }\n }\n if (materialDef.normalTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"normalMap\", materialDef.normalTexture));\n materialParams.normalScale = new Vector2(1, 1);\n if (materialDef.normalTexture.scale !== undefined) {\n const scale = materialDef.normalTexture.scale;\n materialParams.normalScale.set(scale, scale);\n }\n }\n if (materialDef.occlusionTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"aoMap\", materialDef.occlusionTexture));\n if (materialDef.occlusionTexture.strength !== undefined) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n if (materialDef.emissiveFactor !== undefined &&\n materialType !== MeshBasicMaterial) {\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n }\n if (materialDef.emissiveTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"emissiveMap\", materialDef.emissiveTexture));\n }\n return Promise.all(pending).then(function () {\n let material;\n if (materialType === GLTFMeshStandardSGMaterial) {\n material =\n extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n }\n else {\n material = new materialType(materialParams);\n }\n if (materialDef.name)\n material.name = materialDef.name;\n // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n if (material.map)\n material.map.encoding = sRGBEncoding;\n if (material.emissiveMap)\n material.emissiveMap.encoding = sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n parser.associations.set(material, { materials: materialIndex });\n if (materialDef.extensions)\n addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n }\n /** When Object3D instances are targeted by animation, they need unique names. */\n createUniqueName(originalName) {\n const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || \"\");\n let name = sanitizedName;\n for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n name = sanitizedName + \"_\" + i;\n }\n this.nodeNamesUsed[name] = true;\n return name;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */\n loadGeometries(primitives) {\n const parser = this;\n const extensions = this.extensions;\n const cache = this.primitiveCache;\n function createDracoPrimitive(primitive) {\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]\n .decodePrimitive(primitive, parser)\n .then(function (geometry) {\n return addPrimitiveAttributes(geometry, primitive, parser);\n });\n }\n const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const primitive = primitives[i];\n const cacheKey = createPrimitiveKey(primitive);\n // See if we've already created this geometry\n const cached = cache[cacheKey];\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached.promise);\n }\n else {\n let geometryPromise;\n if (primitive.extensions &&\n primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n // Use DRACO geometry if available\n geometryPromise = createDracoPrimitive(primitive);\n }\n else {\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n }\n // Cache this geometry\n cache[cacheKey] = { primitive: primitive, promise: geometryPromise };\n pending.push(geometryPromise);\n }\n }\n return Promise.all(pending);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n * @param {number} meshIndex\n * @return {Promise}\n */\n loadMesh(meshIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const meshDef = json.meshes[meshIndex];\n const primitives = meshDef.primitives;\n const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const material = primitives[i].material === undefined\n ? createDefaultMaterial(this.cache)\n : this.getDependency(\"material\", primitives[i].material);\n pending.push(material);\n }\n pending.push(parser.loadGeometries(primitives));\n return Promise.all(pending).then(function (results) {\n const materials = results.slice(0, results.length - 1);\n const geometries = results[results.length - 1];\n const meshes = [];\n for (let i = 0, il = geometries.length; i < il; i++) {\n const geometry = geometries[i];\n const primitive = primitives[i];\n // 1. create Mesh\n let mesh;\n const material = materials[i];\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n primitive.mode === undefined) {\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n mesh =\n meshDef.isSkinnedMesh === true\n ? new SkinnedMesh(geometry, material)\n : new Mesh(geometry, material);\n if (mesh.isSkinnedMesh === true &&\n !mesh.geometry.attributes.skinWeight.normalized) {\n // we normalize floating point skin weight array to fix malformed assets (see #15319)\n // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n mesh.normalizeSkinWeights();\n }\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n }\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new LineSegments(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new Line(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new LineLoop(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new Points(geometry, material);\n }\n else {\n throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \" + primitive.mode);\n }\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n mesh.name = parser.createUniqueName(meshDef.name || \"mesh_\" + meshIndex);\n assignExtrasToUserData(mesh, meshDef);\n if (primitive.extensions)\n addUnknownExtensionsToUserData(extensions, mesh, primitive);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n for (let i = 0, il = meshes.length; i < il; i++) {\n parser.associations.set(meshes[i], {\n meshes: meshIndex,\n primitives: i,\n });\n }\n if (meshes.length === 1) {\n return meshes[0];\n }\n const group = new Group();\n parser.associations.set(group, { meshes: meshIndex });\n for (let i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n return group;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n * @param {number} cameraIndex\n * @return {Promise}\n */\n loadCamera(cameraIndex) {\n let camera;\n const cameraDef = this.json.cameras[cameraIndex];\n const params = cameraDef[cameraDef.type];\n if (!params) {\n console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");\n return;\n }\n if (cameraDef.type === \"perspective\") {\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n }\n else if (cameraDef.type === \"orthographic\") {\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n }\n if (cameraDef.name)\n camera.name = this.createUniqueName(cameraDef.name);\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */\n loadSkin(skinIndex) {\n const skinDef = this.json.skins[skinIndex];\n const skinEntry = { joints: skinDef.joints };\n if (skinDef.inverseBindMatrices === undefined) {\n return Promise.resolve(skinEntry);\n }\n return this.getDependency(\"accessor\", skinDef.inverseBindMatrices).then(function (accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n * @param {number} animationIndex\n * @return {Promise}\n */\n loadAnimation(animationIndex) {\n const json = this.json;\n const animationDef = json.animations[animationIndex];\n const pendingNodes = [];\n const pendingInputAccessors = [];\n const pendingOutputAccessors = [];\n const pendingSamplers = [];\n const pendingTargets = [];\n for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n const channel = animationDef.channels[i];\n const sampler = animationDef.samplers[channel.sampler];\n const target = channel.target;\n const name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n const input = animationDef.parameters !== undefined\n ? animationDef.parameters[sampler.input]\n : sampler.input;\n const output = animationDef.parameters !== undefined\n ? animationDef.parameters[sampler.output]\n : sampler.output;\n pendingNodes.push(this.getDependency(\"node\", name));\n pendingInputAccessors.push(this.getDependency(\"accessor\", input));\n pendingOutputAccessors.push(this.getDependency(\"accessor\", output));\n pendingSamplers.push(sampler);\n pendingTargets.push(target);\n }\n return Promise.all([\n Promise.all(pendingNodes),\n Promise.all(pendingInputAccessors),\n Promise.all(pendingOutputAccessors),\n Promise.all(pendingSamplers),\n Promise.all(pendingTargets),\n ]).then(function (dependencies) {\n const nodes = dependencies[0];\n const inputAccessors = dependencies[1];\n const outputAccessors = dependencies[2];\n const samplers = dependencies[3];\n const targets = dependencies[4];\n const tracks = [];\n for (let i = 0, il = nodes.length; i < il; i++) {\n const node = nodes[i];\n const inputAccessor = inputAccessors[i];\n const outputAccessor = outputAccessors[i];\n const sampler = samplers[i];\n const target = targets[i];\n if (node === undefined)\n continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n let TypedKeyframeTrack;\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = NumberKeyframeTrack;\n break;\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = QuaternionKeyframeTrack;\n break;\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = VectorKeyframeTrack;\n break;\n }\n const targetName = node.name ? node.name : node.uuid;\n const interpolation = sampler.interpolation !== undefined\n ? INTERPOLATION[sampler.interpolation]\n : InterpolateLinear;\n const targetNames = [];\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n node.traverse(function (object) {\n if (object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n }\n else {\n targetNames.push(targetName);\n }\n let outputArray = outputAccessor.array;\n if (outputAccessor.normalized) {\n const scale = getNormalizedComponentScale(outputArray.constructor);\n const scaled = new Float32Array(outputArray.length);\n for (let j = 0, jl = outputArray.length; j < jl; j++) {\n scaled[j] = outputArray[j] * scale;\n }\n outputArray = scaled;\n }\n for (let j = 0, jl = targetNames.length; j < jl; j++) {\n const track = new TypedKeyframeTrack(targetNames[j] + \".\" + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation);\n // Override interpolation with custom factory method.\n if (sampler.interpolation === \"CUBICSPLINE\") {\n track.createInterpolant =\n function InterpolantFactoryMethodGLTFCubicSpline(result) {\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n // must be divided by three to get the interpolant's sampleSize argument.\n const interpolantType = this instanceof QuaternionKeyframeTrack\n ? GLTFCubicSplineQuaternionInterpolant\n : GLTFCubicSplineInterpolant;\n return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n };\n // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline =\n true;\n }\n tracks.push(track);\n }\n }\n const name = animationDef.name\n ? animationDef.name\n : \"animation_\" + animationIndex;\n return new AnimationClip(name, undefined, tracks);\n });\n }\n createNodeMesh(nodeIndex) {\n const json = this.json;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n if (nodeDef.mesh === undefined)\n return null;\n return parser.getDependency(\"mesh\", nodeDef.mesh).then(function (mesh) {\n const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\n // if weights are provided on the node, override weights on the mesh.\n if (nodeDef.weights !== undefined) {\n node.traverse(function (o) {\n if (!o.isMesh)\n return;\n for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n * @param {number} nodeIndex\n * @return {Promise}\n */\n loadNode(nodeIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n // reserve node's name before its dependencies, so the root has the intended name.\n const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : \"\";\n return (function () {\n const pending = [];\n const meshPromise = parser._invokeOne(function (ext) {\n return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n });\n if (meshPromise) {\n pending.push(meshPromise);\n }\n if (nodeDef.camera !== undefined) {\n pending.push(parser\n .getDependency(\"camera\", nodeDef.camera)\n .then(function (camera) {\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n }));\n }\n parser\n ._invokeAll(function (ext) {\n return (ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex));\n })\n .forEach(function (promise) {\n pending.push(promise);\n });\n return Promise.all(pending);\n })().then(function (objects) {\n let node;\n // .isBone isn't in glTF spec. See ._markDefs\n if (nodeDef.isBone === true) {\n node = new Bone();\n }\n else if (objects.length > 1) {\n node = new Group();\n }\n else if (objects.length === 1) {\n node = objects[0];\n }\n else {\n node = new Object3D();\n }\n if (node !== objects[0]) {\n for (let i = 0, il = objects.length; i < il; i++) {\n node.add(objects[i]);\n }\n }\n if (nodeDef.name) {\n node.userData.name = nodeDef.name;\n node.name = nodeName;\n }\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions)\n addUnknownExtensionsToUserData(extensions, node, nodeDef);\n if (nodeDef.matrix !== undefined) {\n const matrix = new Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix4(matrix);\n }\n else {\n if (nodeDef.translation !== undefined) {\n node.position.fromArray(nodeDef.translation);\n }\n if (nodeDef.rotation !== undefined) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n if (nodeDef.scale !== undefined) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n if (!parser.associations.has(node)) {\n parser.associations.set(node, {});\n }\n parser.associations.get(node).nodes = nodeIndex;\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n * @param {number} sceneIndex\n * @return {Promise}\n */\n loadScene(sceneIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const sceneDef = this.json.scenes[sceneIndex];\n const parser = this;\n // Loader returns Group, not Scene.\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n const scene = new Group();\n if (sceneDef.name)\n scene.name = parser.createUniqueName(sceneDef.name);\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions)\n addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n const nodeIds = sceneDef.nodes || [];\n const pending = [];\n for (let i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\n }\n return Promise.all(pending).then(function () {\n // Removes dangling associations, associations that reference a node that\n // didn't make it into the scene.\n const reduceAssociations = (node) => {\n const reducedAssociations = new Map();\n for (const [key, value] of parser.associations) {\n if (key instanceof Material || key instanceof Texture) {\n reducedAssociations.set(key, value);\n }\n }\n node.traverse((node) => {\n const mappings = parser.associations.get(node);\n if (mappings != null) {\n reducedAssociations.set(node, mappings);\n }\n });\n return reducedAssociations;\n };\n parser.associations = reduceAssociations(scene);\n return scene;\n });\n }\n}\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\n const nodeDef = json.nodes[nodeId];\n return parser\n .getDependency(\"node\", nodeId)\n .then(function (node) {\n if (nodeDef.skin === undefined)\n return node;\n // build skeleton here as well\n let skinEntry;\n return parser\n .getDependency(\"skin\", nodeDef.skin)\n .then(function (skin) {\n skinEntry = skin;\n const pendingJoints = [];\n for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency(\"node\", skinEntry.joints[i]));\n }\n return Promise.all(pendingJoints);\n })\n .then(function (jointNodes) {\n node.traverse(function (mesh) {\n if (!mesh.isMesh)\n return;\n const bones = [];\n const boneInverses = [];\n for (let j = 0, jl = jointNodes.length; j < jl; j++) {\n const jointNode = jointNodes[j];\n if (jointNode) {\n bones.push(jointNode);\n const mat = new Matrix4();\n if (skinEntry.inverseBindMatrices !== undefined) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n boneInverses.push(mat);\n }\n else {\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n });\n return node;\n });\n })\n .then(function (node) {\n // build node hierachy\n parentObject.add(node);\n const pending = [];\n if (nodeDef.children) {\n const children = nodeDef.children;\n for (let i = 0, il = children.length; i < il; i++) {\n const child = children[i];\n pending.push(buildNodeHierarchy(child, node, json, parser));\n }\n }\n return Promise.all(pending);\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const box = new Box3();\n if (attributes.POSITION !== undefined) {\n const accessor = parser.json.accessors[attributes.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n if (min !== undefined && max !== undefined) {\n box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n box.min.multiplyScalar(boxScale);\n box.max.multiplyScalar(boxScale);\n }\n }\n else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n return;\n }\n }\n else {\n return;\n }\n const targets = primitiveDef.targets;\n if (targets !== undefined) {\n const maxDisplacement = new Vector3();\n const vector = new Vector3();\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== undefined) {\n const accessor = parser.json.accessors[target.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n if (min !== undefined && max !== undefined) {\n // we need to get max of absolute components because target weight is [-1,1]\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n vector.multiplyScalar(boxScale);\n }\n // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n // are used to implement key-frame animations and as such only two are active at a time - this results in very large\n // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n maxDisplacement.max(vector);\n }\n else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n }\n }\n }\n // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n box.expandByVector(maxDisplacement);\n }\n geometry.boundingBox = box;\n const sphere = new Sphere();\n box.getCenter(sphere.center);\n sphere.radius = box.min.distanceTo(box.max) / 2;\n geometry.boundingSphere = sphere;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const pending = [];\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser\n .getDependency(\"accessor\", accessorIndex)\n .then(function (accessor) {\n geometry.setAttribute(attributeName, accessor);\n });\n }\n for (const gltfAttributeName in attributes) {\n const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\n // Skip attributes already provided by e.g. Draco extension.\n if (threeAttributeName in geometry.attributes)\n continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n if (primitiveDef.indices !== undefined && !geometry.index) {\n const accessor = parser\n .getDependency(\"accessor\", primitiveDef.indices)\n .then(function (accessor) {\n geometry.setIndex(accessor);\n });\n pending.push(accessor);\n }\n assignExtrasToUserData(geometry, primitiveDef);\n computeBounds(geometry, primitiveDef, parser);\n return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined\n ? addMorphTargets(geometry, primitiveDef.targets, parser)\n : geometry;\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode(geometry, drawMode) {\n let index = geometry.getIndex();\n // generate index if not present\n if (index === null) {\n const indices = [];\n const position = geometry.getAttribute(\"position\");\n if (position !== undefined) {\n for (let i = 0; i < position.count; i++) {\n indices.push(i);\n }\n geometry.setIndex(indices);\n index = geometry.getIndex();\n }\n else {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\");\n return geometry;\n }\n }\n //\n const numberOfTriangles = index.count - 2;\n const newIndices = [];\n if (drawMode === TriangleFanDrawMode) {\n // gl.TRIANGLE_FAN\n for (let i = 1; i <= numberOfTriangles; i++) {\n newIndices.push(index.getX(0));\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n }\n }\n else {\n // gl.TRIANGLE_STRIP\n for (let i = 0; i < numberOfTriangles; i++) {\n if (i % 2 === 0) {\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i + 2));\n }\n else {\n newIndices.push(index.getX(i + 2));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i));\n }\n }\n }\n if (newIndices.length / 3 !== numberOfTriangles) {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");\n }\n // build final geometry\n const newGeometry = geometry.clone();\n newGeometry.setIndex(newIndices);\n return newGeometry;\n}\n//# sourceMappingURL=GLTFLoader.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { vsync } from \"dangle\";\nimport { layoutConfig, GestureContainer, loge, ViewComponent, } from \"doric\";\nimport THREE from \"three\";\nimport { OrbitControls } from \"./controls/OrbitControls\";\nimport { GLTFLoader } from \"./loaders/GLTFLoader\";\nimport { ThreeView } from \"./ThreeView\";\nlet GLTFView = class GLTFView extends GestureContainer {\n constructor() {\n super();\n this.touchable = true;\n this.threeView = new ThreeView();\n this.threeView.layoutConfig = layoutConfig().most();\n this.addChild(this.threeView);\n this.threeView.gesture = this;\n this.threeView.onInited = (renderer) => {\n if (!!!this.context) {\n throw new Error(\"Please set context for GLTFView\");\n }\n if (!!!this.res) {\n throw new Error(\"Please set resource for GLTFView\");\n }\n const scene = new THREE.Scene();\n scene.background = new THREE.Color(0xbfe3dd);\n const camera = new THREE.PerspectiveCamera(40, renderer.domElement.width / renderer.domElement.height, 1, 100);\n camera.position.set(5, 2, 8);\n {\n const skyColor = 0xffffff;\n const groundColor = 0xffffff; // brownish orange\n const intensity = 1;\n const light = new THREE.HemisphereLight(skyColor, groundColor, intensity);\n scene.add(light);\n }\n {\n const color = 0xffffff;\n const intensity = 1.5;\n const light = new THREE.DirectionalLight(color, intensity);\n light.position.set(5, 10, 2);\n scene.add(light);\n }\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.target.set(0, 0.5, 0);\n controls.update();\n controls.enablePan = false;\n controls.enableDamping = true;\n const loader = new GLTFLoader(this.context);\n let mixer;\n const clock = new THREE.Clock();\n const requestAnimationFrame = vsync(this.context).requestAnimationFrame;\n function animate() {\n requestAnimationFrame(animate);\n const delta = clock.getDelta();\n mixer.update(delta);\n controls.update();\n renderer.render(scene, camera);\n }\n try {\n loader.load(this.res, (gltf) => {\n var _a;\n (_a = this.onLoaded) === null || _a === void 0 ? void 0 : _a.call(this, gltf);\n const model = gltf.scene;\n model.position.set(1, 1, 0);\n model.scale.set(0.01, 0.01, 0.01);\n scene.add(model);\n mixer = new THREE.AnimationMixer(model);\n mixer.clipAction(gltf.animations[0]).play();\n animate();\n }, undefined, function (e) {\n loge(\"error\", e, new Error().stack);\n });\n }\n catch (error) {\n loge(error.stack);\n }\n };\n }\n};\nGLTFView = __decorate([\n ViewComponent,\n __metadata(\"design:paramtypes\", [])\n], GLTFView);\nexport { GLTFView };\n//# sourceMappingURL=GLTFView.js.map"],"names":["__decorate","this","__metadata","ThreeView","DangleView","THREE","ViewComponent","EventDispatcher","Vector3","MOUSE","TOUCH","Quaternion","Spherical","Vector2","console","loge","logw","log","Resource","Loader","Cache","resourceLoader","UnifiedResource","imageDecoder","LoaderUtils","Color","DirectionalLight","PointLight","SpotLight","MeshBasicMaterial","MeshPhysicalMaterial","sRGBEncoding","MeshStandardMaterial","TangentSpaceNormalMap","Interpolant","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","InterpolateLinear","InterpolateDiscrete","FrontSide","ImageBitmapLoader","InterleavedBuffer","InterleavedBufferAttribute","BufferAttribute","Texture","PointsMaterial","Material","LineBasicMaterial","DoubleSide","PropertyBinding","BufferGeometry","SkinnedMesh","Mesh","TriangleStripDrawMode","TriangleFanDrawMode","LineSegments","Line","LineLoop","Points","Group","PerspectiveCamera","MathUtils","OrthographicCamera","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","AnimationClip","Bone","Object3D","Matrix4","Skeleton","Box3","Sphere","GLTFView","GestureContainer","layoutConfig","vsync"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle_doric-three.js","sources":["../build/lib/ThreeView.js","../build/lib/controls/OrbitControls.js","../build/lib/utils.js","../build/lib/loaders/FileLoader.js","../build/lib/loaders/TextureLoader.js","../build/lib/loaders/GLTFLoader.js","../build/lib/GLTFView.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n// @ts-nocheck\nimport { ViewComponent } from \"doric\";\nimport { DangleView } from \"dangle\";\nimport THREE from \"three\";\nlet ThreeView = class ThreeView extends DangleView {\n constructor() {\n super();\n this.touchable = true;\n this.onReady = (gl) => {\n var _a;\n if (this.gestureRef && this.gestureRef.current) {\n this.gesture = this.gestureRef.current;\n }\n this.gl = gl;\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n const inputCanvas = {\n width: width,\n height: height,\n style: {},\n addEventListener: this.addEventListener,\n removeEventListener: (() => { }),\n setPointerCapture: (() => { }),\n releasePointerCapture: (() => { }),\n clientWidth: width,\n clientHeight: height,\n getContext: (() => {\n return gl;\n }),\n };\n let window = {\n innerWidth: width,\n innerHeight: height,\n devicePixelRatio: 1,\n addEventListener: (() => { }),\n };\n const renderer = new THREE.WebGLRenderer({\n antialias: true,\n canvas: inputCanvas,\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.outputEncoding = THREE.sRGBEncoding;\n (_a = this.onInited) === null || _a === void 0 ? void 0 : _a.call(this, renderer);\n };\n }\n isDirty() {\n var _a;\n (_a = this.gl) === null || _a === void 0 ? void 0 : _a.endFrame();\n return super.isDirty();\n }\n set gesture(v) {\n this.addEventListener = (name, fn) => {\n if (name == \"pointerdown\") {\n v.onTouchDown = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointerup\") {\n v.onTouchUp = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointermove\") {\n v.onTouchMove = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n else if (name == \"pointercancel\") {\n v.onTouchCancel = ({ x, y }) => {\n fn({\n pageX: x * Environment.screenScale,\n pageY: y * Environment.screenScale,\n pointerType: \"touch\",\n });\n };\n }\n };\n }\n};\nThreeView = __decorate([\n ViewComponent,\n __metadata(\"design:paramtypes\", [])\n], ThreeView);\nexport { ThreeView };\n//# sourceMappingURL=ThreeView.js.map","// @ts-nocheck\nimport { EventDispatcher, MOUSE, Quaternion, Spherical, TOUCH, Vector2, Vector3 } from 'three';\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\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\nclass OrbitControls extends EventDispatcher {\n constructor(object, domElement) {\n super();\n if (domElement === undefined)\n console.warn('THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.');\n // if ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n this.object = object;\n this.domElement = domElement;\n this.domElement.style.touchAction = 'none'; // disable touch scroll\n // Set to false to disable this control\n this.enabled = true;\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new Vector3();\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0;\n this.maxDistance = Infinity;\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0;\n this.maxZoom = Infinity;\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0; // radians\n this.maxPolarAngle = Math.PI; // radians\n // How far you can orbit horizontally, upper and lower limits.\n // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n this.minAzimuthAngle = -Infinity; // radians\n this.maxAzimuthAngle = Infinity; // radians\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false;\n this.dampingFactor = 0.05;\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true;\n this.zoomSpeed = 1.0;\n // Set to false to disable rotating\n this.enableRotate = true;\n this.rotateSpeed = 1.0;\n // Set to false to disable panning\n this.enablePan = true;\n this.panSpeed = 1.0;\n this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n this.keyPanSpeed = 7.0; // pixels moved per arrow key push\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = false;\n this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n // The four arrow keys\n this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n // Mouse buttons\n this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n // Touch fingers\n this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n // for reset\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom;\n // the target DOM element for key events\n this._domElementKeyEvents = null;\n //\n // public methods\n //\n this.getPolarAngle = function () {\n return spherical.phi;\n };\n this.getAzimuthalAngle = function () {\n return spherical.theta;\n };\n this.getDistance = function () {\n return this.object.position.distanceTo(this.target);\n };\n this.listenToKeyEvents = function (domElement) {\n domElement.addEventListener('keydown', onKeyDown);\n this._domElementKeyEvents = domElement;\n };\n this.saveState = function () {\n scope.target0.copy(scope.target);\n scope.position0.copy(scope.object.position);\n scope.zoom0 = scope.object.zoom;\n };\n this.reset = function () {\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(_changeEvent);\n scope.update();\n state = STATE.NONE;\n };\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = function () {\n const offset = new Vector3();\n // so camera.up is the orbit axis\n const quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0));\n const quatInverse = quat.clone().invert();\n const lastPosition = new Vector3();\n const lastQuaternion = new Quaternion();\n const twoPI = 2 * Math.PI;\n return function update() {\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat);\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset);\n if (scope.autoRotate && state === STATE.NONE) {\n rotateLeft(getAutoRotationAngle());\n }\n if (scope.enableDamping) {\n spherical.theta += sphericalDelta.theta * scope.dampingFactor;\n spherical.phi += sphericalDelta.phi * scope.dampingFactor;\n }\n else {\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n }\n // restrict theta to be between desired limits\n let min = scope.minAzimuthAngle;\n let max = scope.maxAzimuthAngle;\n if (isFinite(min) && isFinite(max)) {\n if (min < -Math.PI)\n min += twoPI;\n else if (min > Math.PI)\n min -= twoPI;\n if (max < -Math.PI)\n max += twoPI;\n else if (max > Math.PI)\n max -= twoPI;\n if (min <= max) {\n spherical.theta = Math.max(min, Math.min(max, spherical.theta));\n }\n else {\n spherical.theta = (spherical.theta > (min + max) / 2) ?\n Math.max(min, spherical.theta) :\n Math.min(max, spherical.theta);\n }\n }\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n spherical.makeSafe();\n spherical.radius *= scale;\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\n // move target to panned location\n if (scope.enableDamping === true) {\n scope.target.addScaledVector(panOffset, scope.dampingFactor);\n }\n else {\n scope.target.add(panOffset);\n }\n offset.setFromSpherical(spherical);\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse);\n position.copy(scope.target).add(offset);\n scope.object.lookAt(scope.target);\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= (1 - scope.dampingFactor);\n sphericalDelta.phi *= (1 - scope.dampingFactor);\n panOffset.multiplyScalar(1 - scope.dampingFactor);\n }\n else {\n sphericalDelta.set(0, 0, 0);\n panOffset.set(0, 0, 0);\n }\n scale = 1;\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n if (zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n scope.dispatchEvent(_changeEvent);\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n return true;\n }\n return false;\n };\n }();\n this.dispose = function () {\n scope.domElement.removeEventListener('contextmenu', onContextMenu);\n scope.domElement.removeEventListener('pointerdown', onPointerDown);\n scope.domElement.removeEventListener('pointercancel', onPointerCancel);\n scope.domElement.removeEventListener('wheel', onMouseWheel);\n scope.domElement.removeEventListener('pointermove', onPointerMove);\n scope.domElement.removeEventListener('pointerup', onPointerUp);\n if (scope._domElementKeyEvents !== null) {\n scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown);\n }\n //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n };\n //\n // internals\n //\n const scope = this;\n const STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6\n };\n let state = STATE.NONE;\n const EPS = 0.000001;\n // current position in spherical coordinates\n const spherical = new Spherical();\n const sphericalDelta = new Spherical();\n let scale = 1;\n const panOffset = new Vector3();\n let zoomChanged = false;\n const rotateStart = new Vector2();\n const rotateEnd = new Vector2();\n const rotateDelta = new Vector2();\n const panStart = new Vector2();\n const panEnd = new Vector2();\n const panDelta = new Vector2();\n const dollyStart = new Vector2();\n const dollyEnd = new Vector2();\n const dollyDelta = new Vector2();\n const pointers = [];\n const pointerPositions = {};\n function getAutoRotationAngle() {\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed);\n }\n function rotateLeft(angle) {\n sphericalDelta.theta -= angle;\n }\n function rotateUp(angle) {\n sphericalDelta.phi -= angle;\n }\n const panLeft = function () {\n const v = new Vector3();\n return function panLeft(distance, objectMatrix) {\n v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n v.multiplyScalar(-distance);\n panOffset.add(v);\n };\n }();\n const panUp = function () {\n const v = new Vector3();\n return function panUp(distance, objectMatrix) {\n if (scope.screenSpacePanning === true) {\n v.setFromMatrixColumn(objectMatrix, 1);\n }\n else {\n v.setFromMatrixColumn(objectMatrix, 0);\n v.crossVectors(scope.object.up, v);\n }\n v.multiplyScalar(distance);\n panOffset.add(v);\n };\n }();\n // deltaX and deltaY are in pixels; right and down are positive\n const pan = function () {\n const offset = new Vector3();\n return function pan(deltaX, deltaY) {\n const element = scope.domElement;\n if (scope.object.isPerspectiveCamera) {\n // perspective\n const position = scope.object.position;\n offset.copy(position).sub(scope.target);\n let targetDistance = offset.length();\n // half of the fov is center to top of screen\n targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);\n // we use only clientHeight here so aspect ratio does not distort speed\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n }\n else if (scope.object.isOrthographicCamera) {\n // orthographic\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n }\n else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n scope.enablePan = false;\n }\n };\n }();\n function dollyOut(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale;\n }\n else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n }\n else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n }\n function dollyIn(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale;\n }\n else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n }\n else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n }\n //\n // event callbacks - update the object state\n //\n function handleMouseDownRotate(event) {\n rotateStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownDolly(event) {\n dollyStart.set(event.clientX, event.clientY);\n }\n function handleMouseDownPan(event) {\n panStart.set(event.clientX, event.clientY);\n }\n function handleMouseMoveRotate(event) {\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n scope.update();\n }\n function handleMouseMoveDolly(event) {\n dollyEnd.set(event.clientX, event.clientY);\n dollyDelta.subVectors(dollyEnd, dollyStart);\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale());\n }\n else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale());\n }\n dollyStart.copy(dollyEnd);\n scope.update();\n }\n function handleMouseMovePan(event) {\n panEnd.set(event.clientX, event.clientY);\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n scope.update();\n }\n function handleMouseUp( /*event*/) {\n // no-op\n }\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyIn(getZoomScale());\n }\n else if (event.deltaY > 0) {\n dollyOut(getZoomScale());\n }\n scope.update();\n }\n function handleKeyDown(event) {\n let needsUpdate = false;\n switch (event.code) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n needsUpdate = true;\n break;\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n }\n if (needsUpdate) {\n // prevent the browser from scrolling on cursor keys\n event.preventDefault();\n scope.update();\n }\n }\n function handleTouchStartRotate() {\n if (pointers.length === 1) {\n rotateStart.set(pointers[0].pageX, pointers[0].pageY);\n }\n else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n rotateStart.set(x, y);\n }\n }\n function handleTouchStartPan() {\n if (pointers.length === 1) {\n panStart.set(pointers[0].pageX, pointers[0].pageY);\n }\n else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n panStart.set(x, y);\n }\n }\n function handleTouchStartDolly() {\n const dx = pointers[0].pageX - pointers[1].pageX;\n const dy = pointers[0].pageY - pointers[1].pageY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyStart.set(0, distance);\n }\n function handleTouchStartDollyPan() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enablePan)\n handleTouchStartPan();\n }\n function handleTouchStartDollyRotate() {\n if (scope.enableZoom)\n handleTouchStartDolly();\n if (scope.enableRotate)\n handleTouchStartRotate();\n }\n function handleTouchMoveRotate(event) {\n if (pointers.length == 1) {\n rotateEnd.set(event.pageX, event.pageY);\n }\n else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n rotateEnd.set(x, y);\n }\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n const element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n }\n function handleTouchMovePan(event) {\n if (pointers.length === 1) {\n panEnd.set(event.pageX, event.pageY);\n }\n else {\n const position = getSecondPointerPosition(event);\n const x = 0.5 * (event.pageX + position.x);\n const y = 0.5 * (event.pageY + position.y);\n panEnd.set(x, y);\n }\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n }\n function handleTouchMoveDolly(event) {\n const position = getSecondPointerPosition(event);\n const dx = event.pageX - position.x;\n const dy = event.pageY - position.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyEnd.set(0, distance);\n dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\n dollyOut(dollyDelta.y);\n dollyStart.copy(dollyEnd);\n }\n function handleTouchMoveDollyPan(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enablePan)\n handleTouchMovePan(event);\n }\n function handleTouchMoveDollyRotate(event) {\n if (scope.enableZoom)\n handleTouchMoveDolly(event);\n if (scope.enableRotate)\n handleTouchMoveRotate(event);\n }\n function handleTouchEnd( /*event*/) {\n // no-op\n }\n //\n // event handlers - FSM: listen for events and reset state\n //\n function onPointerDown(event) {\n if (scope.enabled === false)\n return;\n if (pointers.length === 0) {\n scope.domElement.setPointerCapture(event.pointerId);\n scope.domElement.addEventListener('pointermove', onPointerMove);\n scope.domElement.addEventListener('pointerup', onPointerUp);\n }\n //\n addPointer(event);\n if (event.pointerType === 'touch') {\n onTouchStart(event);\n }\n else {\n onMouseDown(event);\n }\n }\n function onPointerMove(event) {\n if (scope.enabled === false)\n return;\n if (event.pointerType === 'touch') {\n onTouchMove(event);\n }\n else {\n onMouseMove(event);\n }\n }\n function onPointerUp(event) {\n if (scope.enabled === false)\n return;\n if (event.pointerType === 'touch') {\n onTouchEnd();\n }\n else {\n onMouseUp(event);\n }\n removePointer(event);\n //\n if (pointers.length === 0) {\n scope.domElement.releasePointerCapture(event.pointerId);\n scope.domElement.removeEventListener('pointermove', onPointerMove);\n scope.domElement.removeEventListener('pointerup', onPointerUp);\n }\n }\n function onPointerCancel(event) {\n removePointer(event);\n }\n function onMouseDown(event) {\n let mouseAction;\n switch (event.button) {\n case 0:\n mouseAction = scope.mouseButtons.LEFT;\n break;\n case 1:\n mouseAction = scope.mouseButtons.MIDDLE;\n break;\n case 2:\n mouseAction = scope.mouseButtons.RIGHT;\n break;\n default:\n mouseAction = -1;\n }\n switch (mouseAction) {\n case MOUSE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseDownDolly(event);\n state = STATE.DOLLY;\n break;\n case MOUSE.ROTATE:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n else {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n break;\n case MOUSE.PAN:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false)\n return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n else {\n if (scope.enablePan === false)\n return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onMouseMove(event) {\n if (scope.enabled === false)\n return;\n switch (state) {\n case STATE.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleMouseMoveRotate(event);\n break;\n case STATE.DOLLY:\n if (scope.enableZoom === false)\n return;\n handleMouseMoveDolly(event);\n break;\n case STATE.PAN:\n if (scope.enablePan === false)\n return;\n handleMouseMovePan(event);\n break;\n }\n }\n function onMouseUp(event) {\n handleMouseUp(event);\n scope.dispatchEvent(_endEvent);\n state = STATE.NONE;\n }\n function onMouseWheel(event) {\n if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE))\n return;\n event.preventDefault();\n scope.dispatchEvent(_startEvent);\n handleMouseWheel(event);\n scope.dispatchEvent(_endEvent);\n }\n function onKeyDown(event) {\n if (scope.enabled === false || scope.enablePan === false)\n return;\n handleKeyDown(event);\n }\n function onTouchStart(event) {\n trackPointer(event);\n switch (pointers.length) {\n case 1:\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchStartRotate();\n state = STATE.TOUCH_ROTATE;\n break;\n case TOUCH.PAN:\n if (scope.enablePan === false)\n return;\n handleTouchStartPan();\n state = STATE.TOUCH_PAN;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n case 2:\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchStartDollyPan();\n state = STATE.TOUCH_DOLLY_PAN;\n break;\n case TOUCH.DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchStartDollyRotate();\n state = STATE.TOUCH_DOLLY_ROTATE;\n break;\n default:\n state = STATE.NONE;\n }\n break;\n default:\n state = STATE.NONE;\n }\n if (state !== STATE.NONE) {\n scope.dispatchEvent(_startEvent);\n }\n }\n function onTouchMove(event) {\n trackPointer(event);\n switch (state) {\n case STATE.TOUCH_ROTATE:\n if (scope.enableRotate === false)\n return;\n handleTouchMoveRotate(event);\n scope.update();\n break;\n case STATE.TOUCH_PAN:\n if (scope.enablePan === false)\n return;\n handleTouchMovePan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false)\n return;\n handleTouchMoveDollyPan(event);\n scope.update();\n break;\n case STATE.TOUCH_DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false)\n return;\n handleTouchMoveDollyRotate(event);\n scope.update();\n break;\n default:\n state = STATE.NONE;\n }\n }\n function onTouchEnd(event) {\n handleTouchEnd(event);\n scope.dispatchEvent(_endEvent);\n state = STATE.NONE;\n }\n function onContextMenu(event) {\n if (scope.enabled === false)\n return;\n event.preventDefault();\n }\n function addPointer(event) {\n pointers.push(event);\n }\n function removePointer(event) {\n delete pointerPositions[event.pointerId];\n for (let i = 0; i < pointers.length; i++) {\n if (pointers[i].pointerId == event.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n }\n function trackPointer(event) {\n let position = pointerPositions[event.pointerId];\n if (position === undefined) {\n position = new Vector2();\n pointerPositions[event.pointerId] = position;\n }\n position.set(event.pageX, event.pageY);\n }\n function getSecondPointerPosition(event) {\n const pointer = (event.pointerId === pointers[0].pointerId) ? pointers[1] : pointers[0];\n return pointerPositions[pointer.pointerId];\n }\n //\n scope.domElement.addEventListener('contextmenu', onContextMenu);\n scope.domElement.addEventListener('pointerdown', onPointerDown);\n scope.domElement.addEventListener('pointercancel', onPointerCancel);\n scope.domElement.addEventListener('wheel', onMouseWheel, { passive: false });\n // force an update at start\n this.update();\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\nclass MapControls extends OrbitControls {\n constructor(object, domElement) {\n super(object, domElement);\n this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n this.mouseButtons.LEFT = MOUSE.PAN;\n this.mouseButtons.RIGHT = MOUSE.ROTATE;\n this.touches.ONE = TOUCH.PAN;\n this.touches.TWO = TOUCH.DOLLY_ROTATE;\n }\n}\nexport { OrbitControls, MapControls };\n//# sourceMappingURL=OrbitControls.js.map","import { log, loge, logw, Resource } from \"doric\";\nexport const console = {\n error: (...args) => {\n loge(args);\n },\n warn: (...args) => {\n logw(args);\n },\n log: (...args) => {\n log(args);\n },\n};\nexport class FakeResource extends Resource {\n constructor(type, identifier) {\n super(type, identifier);\n }\n}\n//# sourceMappingURL=utils.js.map","import { Resource, resourceLoader } from \"doric\";\nimport { Cache, Loader } from \"three\";\nimport { FakeResource } from \"../utils\";\nconst loading = {};\nexport class FileLoader extends Loader {\n constructor(context, manager) {\n super(manager);\n this.context = context;\n }\n load(res, onLoad, onProgress, onError) {\n let url = res instanceof Resource ? res.identifier : res.url;\n if (url === undefined)\n url = \"\";\n if (this.path !== undefined)\n url = this.path + url;\n url = this.manager.resolveURL(url);\n const cached = Cache.get(url);\n if (cached !== undefined) {\n this.manager.itemStart(url);\n setTimeout(() => {\n if (onLoad)\n onLoad(cached);\n this.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n // Check if request is duplicate\n if (loading[url] !== undefined) {\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError,\n });\n return;\n }\n // Initialise array for duplicate requests\n loading[url] = [];\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError,\n });\n // start the fetch\n let loadingResource;\n if (res instanceof Resource) {\n loadingResource = res;\n }\n else {\n loadingResource = new FakeResource(res.type, url);\n }\n resourceLoader(this.context)\n .load(loadingResource)\n .then((data) => {\n // Add to cache only on HTTP success, so that we do not cache\n // error response bodies as proper responses to requests.\n Cache.add(url, data);\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onLoad)\n callback.onLoad(data);\n }\n this.manager.itemEnd(url);\n })\n .catch((reason) => {\n // Abort errors and other errors are handled the same\n const callbacks = loading[url];\n delete loading[url];\n for (let i = 0, il = callbacks.length; i < il; i++) {\n const callback = callbacks[i];\n if (callback.onError)\n callback.onError(reason);\n }\n this.manager.itemError(url);\n this.manager.itemEnd(url);\n });\n this.manager.itemStart(url);\n }\n setResponseType(value) {\n //@ts-ignore\n this.responseType = value;\n return this;\n }\n setMimeType(value) {\n //@ts-ignore\n this.mimeType = value;\n return this;\n }\n}\n//# sourceMappingURL=FileLoader.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { imageDecoder, } from \"doric\";\nimport THREE, { Loader } from \"three\";\nimport { FakeResource as UnifiedResource } from \"../utils\";\nexport class TextureLoader extends Loader {\n constructor(context, manager) {\n super(manager);\n this.context = context;\n }\n load(res, onLoad, onProgress, onError) {\n let texture = new THREE.DataTexture();\n texture.format = THREE.RGBAFormat;\n const url = res.url;\n let link;\n if (this.path !== \"\" && this.path !== undefined) {\n link = this.path + url;\n }\n else {\n link = url;\n }\n const assetsResource = new UnifiedResource(res.type, link);\n const context = this.context;\n (function () {\n return __awaiter(this, void 0, void 0, function* () {\n const imageInfo = yield imageDecoder(context).getImageInfo(assetsResource);\n const imagePixels = yield imageDecoder(context).decodeToPixels(assetsResource);\n texture.image = {\n data: new Uint8ClampedArray(imagePixels),\n width: imageInfo.width,\n height: imageInfo.height,\n };\n texture.needsUpdate = true;\n if (onLoad !== undefined) {\n onLoad(texture);\n }\n });\n })();\n return texture;\n }\n}\n//# sourceMappingURL=TextureLoader.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { AnimationClip, Bone, Box3, BufferAttribute, BufferGeometry, ClampToEdgeWrapping, Color, DirectionalLight, DoubleSide, FrontSide, Group, ImageBitmapLoader, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, Line, LineBasicMaterial, LineLoop, LineSegments, LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoaderUtils, Material, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MirroredRepeatWrapping, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NumberKeyframeTrack, Object3D, OrthographicCamera, PerspectiveCamera, PointLight, Points, PointsMaterial, PropertyBinding, Quaternion, QuaternionKeyframeTrack, RepeatWrapping, Skeleton, SkinnedMesh, Sphere, SpotLight, TangentSpaceNormalMap, Texture, TriangleFanDrawMode, TriangleStripDrawMode, Vector2, Vector3, VectorKeyframeTrack, sRGBEncoding, } from \"three\";\nimport { console } from \"../utils\";\nimport { FileLoader } from \"./FileLoader\";\nimport { TextureLoader } from \"./TextureLoader\";\nexport function loadGLTF(context, resource) {\n return __awaiter(this, void 0, void 0, function* () {\n const loader = new GLTFLoader(context);\n return new Promise((resolve, reject) => {\n loader.load(resource, (gltf) => {\n resolve(gltf);\n }, undefined, (e) => {\n reject(e);\n });\n });\n });\n}\nexport class GLTFLoader extends Loader {\n constructor(doricContext, manager) {\n super(manager);\n this.doricContext = doricContext;\n this.dracoLoader = null;\n this.ktx2Loader = null;\n this.meshoptDecoder = null;\n this.pluginCallbacks = [];\n this.register(function (parser) {\n return new GLTFMaterialsClearcoatExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureBasisUExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureWebPExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSheenExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsTransmissionExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsVolumeExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsIorExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSpecularExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFLightsExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMeshoptCompression(parser);\n });\n }\n load(resource, onLoad, onProgress, onError) {\n const scope = this;\n const url = resource.identifier;\n let resourcePath;\n if (this.resourcePath !== \"\") {\n resourcePath = this.resourcePath;\n }\n else if (this.path !== \"\") {\n resourcePath = this.path;\n }\n else {\n resourcePath = LoaderUtils.extractUrlBase(url);\n }\n // Tells the LoadingManager to track an extra item, which resolves after\n // the model is fully loaded. This means the count of items loaded will\n // be incorrect, but ensures manager.onLoad() does not fire early.\n this.manager.itemStart(url);\n const _onError = function (e) {\n if (onError) {\n onError(e);\n }\n else {\n console.error(e);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n const loader = new FileLoader(this.doricContext, this.manager);\n loader.setPath(this.path);\n loader.setResponseType(\"arraybuffer\");\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(resource, function (data) {\n try {\n scope.parse(data, resource.type, resourcePath, function (gltf) {\n onLoad(gltf);\n scope.manager.itemEnd(url);\n }, _onError);\n }\n catch (e) {\n _onError(e);\n }\n }, onProgress, _onError);\n }\n setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n }\n setDDSLoader() {\n throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n }\n setKTX2Loader(ktx2Loader) {\n this.ktx2Loader = ktx2Loader;\n return this;\n }\n setMeshoptDecoder(meshoptDecoder) {\n this.meshoptDecoder = meshoptDecoder;\n return this;\n }\n register(callback) {\n if (this.pluginCallbacks.indexOf(callback) === -1) {\n this.pluginCallbacks.push(callback);\n }\n return this;\n }\n unregister(callback) {\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n }\n return this;\n }\n parse(data, resType, path, onLoad, onError) {\n let content;\n const extensions = {};\n const plugins = {};\n if (typeof data === \"string\") {\n content = data;\n }\n else {\n const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n }\n catch (error) {\n if (onError)\n onError(error);\n return;\n }\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n }\n else {\n content = LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n const json = JSON.parse(content);\n if (json.asset === undefined || json.asset.version[0] < 2) {\n if (onError)\n onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));\n return;\n }\n const parser = new GLTFParser(this.doricContext, json, {\n path: path || this.resourcePath || \"\",\n crossOrigin: this.crossOrigin,\n requestHeader: this.requestHeader,\n manager: this.manager,\n ktx2Loader: this.ktx2Loader,\n meshoptDecoder: this.meshoptDecoder,\n resType: resType,\n });\n parser.fileLoader.setRequestHeader(this.requestHeader);\n for (let i = 0; i < this.pluginCallbacks.length; i++) {\n const plugin = this.pluginCallbacks[i](parser);\n plugins[plugin.name] = plugin;\n // Workaround to avoid determining as unknown extension\n // in addUnknownExtensionsToUserData().\n // Remove this workaround if we move all the existing\n // extension handlers to plugin system\n extensions[plugin.name] = true;\n }\n if (json.extensionsUsed) {\n for (let i = 0; i < json.extensionsUsed.length; ++i) {\n const extensionName = json.extensionsUsed[i];\n const extensionsRequired = json.extensionsRequired || [];\n switch (extensionName) {\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n break;\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] =\n new GLTFMaterialsPbrSpecularGlossinessExtension();\n break;\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[extensionName] = new GLTFTextureTransformExtension();\n break;\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\n break;\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0 &&\n plugins[extensionName] === undefined) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n }\n }\n }\n parser.setExtensions(extensions);\n parser.setPlugins(plugins);\n parser.parse(onLoad, onError);\n }\n parseAsync(data, path) {\n const scope = this;\n return new Promise(function (resolve, reject) {\n scope.parse(data, path, resolve, reject);\n });\n }\n}\n/* GLTFREGISTRY */\nfunction GLTFRegistry() {\n let objects = {};\n return {\n get: function (key) {\n return objects[key];\n },\n add: function (key, object) {\n objects[key] = object;\n },\n remove: function (key) {\n delete objects[key];\n },\n removeAll: function () {\n objects = {};\n },\n };\n}\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\nconst EXTENSIONS = {\n KHR_BINARY_GLTF: \"KHR_binary_glTF\",\n KHR_DRACO_MESH_COMPRESSION: \"KHR_draco_mesh_compression\",\n KHR_LIGHTS_PUNCTUAL: \"KHR_lights_punctual\",\n KHR_MATERIALS_CLEARCOAT: \"KHR_materials_clearcoat\",\n KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: \"KHR_materials_pbrSpecularGlossiness\",\n KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\",\n};\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n // Object3D instance caches\n this.cache = { refs: {}, uses: {} };\n }\n _markDefs() {\n const parser = this.parser;\n const nodeDefs = this.parser.json.nodes || [];\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.extensions &&\n nodeDef.extensions[this.name] &&\n nodeDef.extensions[this.name].light !== undefined) {\n parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n }\n }\n }\n _loadLight(lightIndex) {\n const parser = this.parser;\n const cacheKey = \"light:\" + lightIndex;\n let dependency = parser.cache.get(cacheKey);\n if (dependency)\n return dependency;\n const json = parser.json;\n const extensions = (json.extensions && json.extensions[this.name]) || {};\n const lightDefs = extensions.lights || [];\n const lightDef = lightDefs[lightIndex];\n let lightNode;\n const color = new Color(0xffffff);\n if (lightDef.color !== undefined)\n color.fromArray(lightDef.color);\n const range = lightDef.range !== undefined ? lightDef.range : 0;\n switch (lightDef.type) {\n case \"directional\":\n lightNode = new DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n case \"point\":\n lightNode = new PointLight(color);\n lightNode.distance = range;\n break;\n case \"spot\":\n lightNode = new SpotLight(color);\n lightNode.distance = range;\n // Handle spotlight properties.\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle =\n lightDef.spot.innerConeAngle !== undefined\n ? lightDef.spot.innerConeAngle\n : 0;\n lightDef.spot.outerConeAngle =\n lightDef.spot.outerConeAngle !== undefined\n ? lightDef.spot.outerConeAngle\n : Math.PI / 4.0;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra =\n 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n default:\n throw new Error(\"THREE.GLTFLoader: Unexpected light type: \" + lightDef.type);\n }\n // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n // here, because node-level parsing will only override position if explicitly specified.\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== undefined)\n lightNode.intensity = lightDef.intensity;\n lightNode.name = parser.createUniqueName(lightDef.name || \"light_\" + lightIndex);\n dependency = Promise.resolve(lightNode);\n parser.cache.add(cacheKey, dependency);\n return dependency;\n }\n createNodeAttachment(nodeIndex) {\n const self = this;\n const parser = this.parser;\n const json = parser.json;\n const nodeDef = json.nodes[nodeIndex];\n const lightDef = (nodeDef.extensions && nodeDef.extensions[this.name]) || {};\n const lightIndex = lightDef.light;\n if (lightIndex === undefined)\n return null;\n return this._loadLight(lightIndex).then(function (light) {\n return parser._getNodeRef(self.cache, lightIndex, light);\n });\n }\n}\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n getMaterialType() {\n return MeshBasicMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pending = [];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const metallicRoughness = materialDef.pbrMetallicRoughness;\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n }\n return Promise.all(pending);\n }\n}\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.clearcoatFactor !== undefined) {\n materialParams.clearcoat = extension.clearcoatFactor;\n }\n if (extension.clearcoatTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatMap\", extension.clearcoatTexture));\n }\n if (extension.clearcoatRoughnessFactor !== undefined) {\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n }\n if (extension.clearcoatRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatRoughnessMap\", extension.clearcoatRoughnessTexture));\n }\n if (extension.clearcoatNormalTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"clearcoatNormalMap\", extension.clearcoatNormalTexture));\n if (extension.clearcoatNormalTexture.scale !== undefined) {\n const scale = extension.clearcoatNormalTexture.scale;\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n }\n }\n return Promise.all(pending);\n }\n}\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n materialParams.sheenColor = new Color(0, 0, 0);\n materialParams.sheenRoughness = 0;\n materialParams.sheen = 1;\n const extension = materialDef.extensions[this.name];\n if (extension.sheenColorFactor !== undefined) {\n materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n }\n if (extension.sheenRoughnessFactor !== undefined) {\n materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n }\n if (extension.sheenColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"sheenColorMap\", extension.sheenColorTexture));\n }\n if (extension.sheenRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"sheenRoughnessMap\", extension.sheenRoughnessTexture));\n }\n return Promise.all(pending);\n }\n}\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n if (extension.transmissionFactor !== undefined) {\n materialParams.transmission = extension.transmissionFactor;\n }\n if (extension.transmissionTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"transmissionMap\", extension.transmissionTexture));\n }\n return Promise.all(pending);\n }\n}\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.thickness =\n extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n if (extension.thicknessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"thicknessMap\", extension.thicknessTexture));\n }\n materialParams.attenuationDistance = extension.attenuationDistance || 0;\n const colorArray = extension.attenuationColor || [1, 1, 1];\n materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n return Promise.all(pending);\n }\n}\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const extension = materialDef.extensions[this.name];\n materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n return Promise.resolve();\n }\n}\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n }\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name])\n return null;\n return MeshPhysicalMaterial;\n }\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.specularIntensity =\n extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n if (extension.specularTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"specularIntensityMap\", extension.specularTexture));\n }\n const colorArray = extension.specularColorFactor || [1, 1, 1];\n materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n if (extension.specularColorTexture !== undefined) {\n pending.push(parser\n .assignTexture(materialParams, \"specularColorMap\", extension.specularColorTexture)\n .then(function (texture) {\n texture.encoding = sRGBEncoding;\n }));\n }\n return Promise.all(pending);\n }\n}\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n }\n loadTexture(textureIndex) {\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n return null;\n }\n const extension = textureDef.extensions[this.name];\n const source = json.images[extension.source];\n const loader = parser.options.ktx2Loader;\n if (!loader) {\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");\n }\n else {\n // Assumes that the extension is optional and that a fallback texture is present\n return null;\n }\n }\n return parser.loadTextureImage(textureIndex, source, loader);\n }\n}\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n this.isSupported = null;\n }\n loadTexture(textureIndex) {\n const name = this.name;\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n if (!textureDef.extensions || !textureDef.extensions[name]) {\n return null;\n }\n const extension = textureDef.extensions[name];\n const source = json.images[extension.source];\n let loader = parser.textureLoader;\n if (source.uri) {\n const handler = parser.options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.detectSupport().then(function (isSupported) {\n if (isSupported)\n return parser.loadTextureImage(textureIndex, source, loader);\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");\n }\n // Fall back to PNG or JPEG.\n return parser.loadTexture(textureIndex);\n });\n }\n detectSupport() {\n if (!this.isSupported) {\n this.isSupported = new Promise(function (resolve) {\n const image = new Image();\n // Lossy test image. Support for lossy images doesn't guarantee support for all\n // WebP images, unfortunately.\n image.src =\n \"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";\n image.onload = image.onerror = function () {\n resolve(image.height === 1);\n };\n });\n }\n return this.isSupported;\n }\n}\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n constructor(parser) {\n this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n this.parser = parser;\n }\n loadBufferView(index) {\n const json = this.parser.json;\n const bufferView = json.bufferViews[index];\n if (bufferView.extensions && bufferView.extensions[this.name]) {\n const extensionDef = bufferView.extensions[this.name];\n const buffer = this.parser.getDependency(\"buffer\", extensionDef.buffer);\n const decoder = this.parser.options.meshoptDecoder;\n if (!decoder || !decoder.supported) {\n if (json.extensionsRequired &&\n json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");\n }\n else {\n // Assumes that the extension is optional and that fallback buffer data is present\n return null;\n }\n }\n return Promise.all([buffer, decoder.ready]).then(function (res) {\n const byteOffset = extensionDef.byteOffset || 0;\n const byteLength = extensionDef.byteLength || 0;\n const count = extensionDef.count;\n const stride = extensionDef.byteStride;\n const result = new ArrayBuffer(count * stride);\n const source = new Uint8Array(res[0], byteOffset, byteLength);\n decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n return result;\n });\n }\n else {\n return null;\n }\n }\n}\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4e4f534a, BIN: 0x004e4942 };\nclass GLTFBinaryExtension {\n constructor(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true),\n };\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");\n }\n else if (this.header.version < 2.0) {\n throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");\n }\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n while (chunkIndex < chunkContentsLength) {\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n const chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = LoaderUtils.decodeText(contentArray);\n }\n else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n }\n // Clients must ignore chunks with unknown types.\n chunkIndex += chunkLength;\n }\n if (this.content === null) {\n throw new Error(\"THREE.GLTFLoader: JSON content not found.\");\n }\n }\n}\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n constructor(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");\n }\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n this.dracoLoader.preload();\n }\n decodePrimitive(primitive, parser) {\n const json = this.json;\n const dracoLoader = this.dracoLoader;\n const bufferViewIndex = primitive.extensions[this.name].bufferView;\n const gltfAttributeMap = primitive.extensions[this.name].attributes;\n const threeAttributeMap = {};\n const attributeNormalizedMap = {};\n const attributeTypeMap = {};\n for (const attributeName in gltfAttributeMap) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n for (const attributeName in primitive.attributes) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n if (gltfAttributeMap[attributeName] !== undefined) {\n const accessorDef = json.accessors[primitive.attributes[attributeName]];\n const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] =\n accessorDef.normalized === true;\n }\n }\n return parser\n .getDependency(\"bufferView\", bufferViewIndex)\n .then(function (bufferView) {\n return new Promise(function (resolve) {\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n for (const attributeName in geometry.attributes) {\n const attribute = geometry.attributes[attributeName];\n const normalized = attributeNormalizedMap[attributeName];\n if (normalized !== undefined)\n attribute.normalized = normalized;\n }\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n }\n}\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n extendTexture(texture, transform) {\n if (transform.texCoord !== undefined) {\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' +\n this.name +\n '\" extension not yet supported.');\n }\n if (transform.offset === undefined &&\n transform.rotation === undefined &&\n transform.scale === undefined) {\n // See https://github.com/mrdoob/three.js/issues/21819.\n return texture;\n }\n texture = texture.clone();\n if (transform.offset !== undefined) {\n texture.offset.fromArray(transform.offset);\n }\n if (transform.rotation !== undefined) {\n texture.rotation = transform.rotation;\n }\n if (transform.scale !== undefined) {\n texture.repeat.fromArray(transform.scale);\n }\n texture.needsUpdate = true;\n return texture;\n }\n}\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n constructor(params) {\n super();\n this.isGLTFSpecularGlossinessMaterial = true;\n //various chunks that need replacing\n const specularMapParsFragmentChunk = [\n \"#ifdef USE_SPECULARMAP\",\n \"\tuniform sampler2D specularMap;\",\n \"#endif\",\n ].join(\"\\n\");\n const glossinessMapParsFragmentChunk = [\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tuniform sampler2D glossinessMap;\",\n \"#endif\",\n ].join(\"\\n\");\n const specularMapFragmentChunk = [\n \"vec3 specularFactor = specular;\",\n \"#ifdef USE_SPECULARMAP\",\n \"\tvec4 texelSpecular = texture2D( specularMap, vUv );\",\n \"\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tspecularFactor *= texelSpecular.rgb;\",\n \"#endif\",\n ].join(\"\\n\");\n const glossinessMapFragmentChunk = [\n \"float glossinessFactor = glossiness;\",\n \"#ifdef USE_GLOSSINESSMAP\",\n \"\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );\",\n \"\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n \"\tglossinessFactor *= texelGlossiness.a;\",\n \"#endif\",\n ].join(\"\\n\");\n const lightPhysicalFragmentChunk = [\n \"PhysicalMaterial material;\",\n \"material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );\",\n \"vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\",\n \"float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\",\n \"material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.\",\n \"material.roughness += geometryRoughness;\",\n \"material.roughness = min( material.roughness, 1.0 );\",\n \"material.specularColor = specularFactor;\",\n ].join(\"\\n\");\n const uniforms = {\n specular: { value: new Color().setHex(0xffffff) },\n glossiness: { value: 1 },\n specularMap: { value: null },\n glossinessMap: { value: null },\n };\n this._extraUniforms = uniforms;\n this.onBeforeCompile = function (shader) {\n for (const uniformName in uniforms) {\n shader.uniforms[uniformName] = uniforms[uniformName];\n }\n shader.fragmentShader = shader.fragmentShader\n .replace(\"uniform float roughness;\", \"uniform vec3 specular;\")\n .replace(\"uniform float metalness;\", \"uniform float glossiness;\")\n .replace(\"#include \", specularMapParsFragmentChunk)\n .replace(\"#include \", glossinessMapParsFragmentChunk)\n .replace(\"#include \", specularMapFragmentChunk)\n .replace(\"#include \", glossinessMapFragmentChunk)\n .replace(\"#include \", lightPhysicalFragmentChunk);\n };\n Object.defineProperties(this, {\n specular: {\n get: function () {\n return uniforms.specular.value;\n },\n set: function (v) {\n uniforms.specular.value = v;\n },\n },\n specularMap: {\n get: function () {\n return uniforms.specularMap.value;\n },\n set: function (v) {\n uniforms.specularMap.value = v;\n if (v) {\n this.defines.USE_SPECULARMAP = \"\"; // USE_UV is set by the renderer for specular maps\n }\n else {\n delete this.defines.USE_SPECULARMAP;\n }\n },\n },\n glossiness: {\n get: function () {\n return uniforms.glossiness.value;\n },\n set: function (v) {\n uniforms.glossiness.value = v;\n },\n },\n glossinessMap: {\n get: function () {\n return uniforms.glossinessMap.value;\n },\n set: function (v) {\n uniforms.glossinessMap.value = v;\n if (v) {\n this.defines.USE_GLOSSINESSMAP = \"\";\n this.defines.USE_UV = \"\";\n }\n else {\n delete this.defines.USE_GLOSSINESSMAP;\n delete this.defines.USE_UV;\n }\n },\n },\n });\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n this.setValues(params);\n }\n copy(source) {\n super.copy(source);\n this.specularMap = source.specularMap;\n this.specular.copy(source.specular);\n this.glossinessMap = source.glossinessMap;\n this.glossiness = source.glossiness;\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n return this;\n }\n}\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n this.specularGlossinessParams = [\n \"color\",\n \"map\",\n \"lightMap\",\n \"lightMapIntensity\",\n \"aoMap\",\n \"aoMapIntensity\",\n \"emissive\",\n \"emissiveIntensity\",\n \"emissiveMap\",\n \"bumpMap\",\n \"bumpScale\",\n \"normalMap\",\n \"normalMapType\",\n \"displacementMap\",\n \"displacementScale\",\n \"displacementBias\",\n \"specularMap\",\n \"specular\",\n \"glossinessMap\",\n \"glossiness\",\n \"alphaMap\",\n \"envMap\",\n \"envMapIntensity\",\n \"refractionRatio\",\n ];\n }\n getMaterialType() {\n return GLTFMeshStandardSGMaterial;\n }\n extendParams(materialParams, materialDef, parser) {\n const pbrSpecularGlossiness = materialDef.extensions[this.name];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const pending = [];\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n const array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", pbrSpecularGlossiness.diffuseTexture));\n }\n materialParams.emissive = new Color(0.0, 0.0, 0.0);\n materialParams.glossiness =\n pbrSpecularGlossiness.glossinessFactor !== undefined\n ? pbrSpecularGlossiness.glossinessFactor\n : 1.0;\n materialParams.specular = new Color(1.0, 1.0, 1.0);\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, \"glossinessMap\", specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, \"specularMap\", specGlossMapDef));\n }\n return Promise.all(pending);\n }\n createMaterial(materialParams) {\n const material = new GLTFMeshStandardSGMaterial(materialParams);\n material.fog = true;\n material.color = materialParams.color;\n material.map = materialParams.map === undefined ? null : materialParams.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap =\n materialParams.aoMap === undefined ? null : materialParams.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = materialParams.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap =\n materialParams.emissiveMap === undefined\n ? null\n : materialParams.emissiveMap;\n material.bumpMap =\n materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n material.bumpScale = 1;\n material.normalMap =\n materialParams.normalMap === undefined ? null : materialParams.normalMap;\n material.normalMapType = TangentSpaceNormalMap;\n if (materialParams.normalScale)\n material.normalScale = materialParams.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap =\n materialParams.specularMap === undefined\n ? null\n : materialParams.specularMap;\n material.specular = materialParams.specular;\n material.glossinessMap =\n materialParams.glossinessMap === undefined\n ? null\n : materialParams.glossinessMap;\n material.glossiness = materialParams.glossiness;\n material.alphaMap = null;\n material.envMap =\n materialParams.envMap === undefined ? null : materialParams.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n return material;\n }\n}\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n }\n}\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n copySampleValue_(index) {\n // Copies a sample value to the result buffer. See description of glTF\n // CUBICSPLINE values layout in interpolate_() function below.\n const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize;\n for (let i = 0; i !== valueSize; i++) {\n result[i] = values[offset + i];\n }\n return result;\n }\n}\nGLTFCubicSplineInterpolant.prototype.beforeStart_ =\n GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.afterEnd_ =\n GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\n const result = this.resultBuffer;\n const values = this.sampleValues;\n const stride = this.valueSize;\n const stride2 = stride * 2;\n const stride3 = stride * 3;\n const td = t1 - t0;\n const p = (t - t0) / td;\n const pp = p * p;\n const ppp = pp * p;\n const offset1 = i1 * stride3;\n const offset0 = offset1 - stride3;\n const s2 = -2 * ppp + 3 * pp;\n const s3 = ppp - pp;\n const s0 = 1 - s2;\n const s1 = s3 - pp + p;\n // Layout of keyframe output values for CUBICSPLINE animations:\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n for (let i = 0; i !== stride; i++) {\n const p0 = values[offset0 + i + stride]; // splineVertex_k\n const m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\n const p1 = values[offset1 + i + stride]; // splineVertex_k+1\n const m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n }\n return result;\n};\nconst _q = new Quaternion();\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n interpolate_(i1, t0, t, t1) {\n const result = super.interpolate_(i1, t0, t, t1);\n _q.fromArray(result).normalize().toArray(result);\n return result;\n }\n}\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n/* CONSTANTS */\nconst WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123,\n};\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\nconst WEBGL_FILTERS = {\n 9728: NearestFilter,\n 9729: LinearFilter,\n 9984: NearestMipmapNearestFilter,\n 9985: LinearMipmapNearestFilter,\n 9986: NearestMipmapLinearFilter,\n 9987: LinearMipmapLinearFilter,\n};\nconst WEBGL_WRAPPINGS = {\n 33071: ClampToEdgeWrapping,\n 33648: MirroredRepeatWrapping,\n 10497: RepeatWrapping,\n};\nconst WEBGL_TYPE_SIZES = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16,\n};\nconst ATTRIBUTES = {\n POSITION: \"position\",\n NORMAL: \"normal\",\n TANGENT: \"tangent\",\n TEXCOORD_0: \"uv\",\n TEXCOORD_1: \"uv2\",\n COLOR_0: \"color\",\n WEIGHTS_0: \"skinWeight\",\n JOINTS_0: \"skinIndex\",\n};\nconst PATH_PROPERTIES = {\n scale: \"scale\",\n translation: \"position\",\n rotation: \"quaternion\",\n weights: \"morphTargetInfluences\",\n};\nconst INTERPOLATION = {\n CUBICSPLINE: undefined,\n // keyframe track will be initialized with a default interpolation type, then modified.\n LINEAR: InterpolateLinear,\n STEP: InterpolateDiscrete,\n};\nconst ALPHA_MODES = {\n OPAQUE: \"OPAQUE\",\n MASK: \"MASK\",\n BLEND: \"BLEND\",\n};\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial(cache) {\n if (cache[\"DefaultMaterial\"] === undefined) {\n cache[\"DefaultMaterial\"] = new MeshStandardMaterial({\n color: 0xffffff,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: FrontSide,\n });\n }\n return cache[\"DefaultMaterial\"];\n}\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n // Add unknown glTF extensions to an object's userData.\n for (const name in objectDef.extensions) {\n if (knownExtensions[name] === undefined) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n}\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== undefined) {\n if (typeof gltfDef.extras === \"object\") {\n Object.assign(object.userData, gltfDef.extras);\n }\n else {\n console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \" + gltfDef.extras);\n }\n }\n}\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addMorphTargets(geometry, targets, parser) {\n let hasMorphPosition = false;\n let hasMorphNormal = false;\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== undefined)\n hasMorphPosition = true;\n if (target.NORMAL !== undefined)\n hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal)\n break;\n }\n if (!hasMorphPosition && !hasMorphNormal)\n return Promise.resolve(geometry);\n const pendingPositionAccessors = [];\n const pendingNormalAccessors = [];\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (hasMorphPosition) {\n const pendingAccessor = target.POSITION !== undefined\n ? parser.getDependency(\"accessor\", target.POSITION)\n : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n if (hasMorphNormal) {\n const pendingAccessor = target.NORMAL !== undefined\n ? parser.getDependency(\"accessor\", target.NORMAL)\n : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n return Promise.all([\n Promise.all(pendingPositionAccessors),\n Promise.all(pendingNormalAccessors),\n ]).then(function (accessors) {\n const morphPositions = accessors[0];\n const morphNormals = accessors[1];\n if (hasMorphPosition)\n geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal)\n geometry.morphAttributes.normal = morphNormals;\n geometry.morphTargetsRelative = true;\n return geometry;\n });\n}\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n if (meshDef.weights !== undefined) {\n for (let i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n }\n // .extras has user-defined data, so check that .extras.targetNames is an array.\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n const targetNames = meshDef.extras.targetNames;\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n for (let i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n }\n else {\n console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\");\n }\n }\n}\nfunction createPrimitiveKey(primitiveDef) {\n const dracoExtension = primitiveDef.extensions &&\n primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n let geometryKey;\n if (dracoExtension) {\n geometryKey =\n \"draco:\" +\n dracoExtension.bufferView +\n \":\" +\n dracoExtension.indices +\n \":\" +\n createAttributesKey(dracoExtension.attributes);\n }\n else {\n geometryKey =\n primitiveDef.indices +\n \":\" +\n createAttributesKey(primitiveDef.attributes) +\n \":\" +\n primitiveDef.mode;\n }\n return geometryKey;\n}\nfunction createAttributesKey(attributes) {\n let attributesKey = \"\";\n const keys = Object.keys(attributes).sort();\n for (let i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + \":\" + attributes[keys[i]] + \";\";\n }\n return attributesKey;\n}\nfunction getNormalizedComponentScale(constructor) {\n // Reference:\n // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n switch (constructor) {\n case Int8Array:\n return 1 / 127;\n case Uint8Array:\n return 1 / 255;\n case Int16Array:\n return 1 / 32767;\n case Uint16Array:\n return 1 / 65535;\n default:\n throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\");\n }\n}\n/* GLTF PARSER */\nclass GLTFParser {\n constructor(doricContext, json = {}, options = {}) {\n this.doricContext = doricContext;\n this.json = json;\n this.extensions = {};\n this.plugins = {};\n this.options = options;\n // loader object cache\n this.cache = new GLTFRegistry();\n // associations between Three.js objects and glTF elements\n this.associations = new Map();\n // BufferGeometry caching\n this.primitiveCache = {};\n // Object3D instance caches\n this.meshCache = { refs: {}, uses: {} };\n this.cameraCache = { refs: {}, uses: {} };\n this.lightCache = { refs: {}, uses: {} };\n this.textureCache = {};\n // Track node names, to ensure no duplicates\n this.nodeNamesUsed = {};\n // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n // expensive work of uploading a texture to the GPU off the main thread.\n if (typeof createImageBitmap !== \"undefined\" &&\n /Firefox|^((?!chrome|android).)*safari/i.test(navigator.userAgent) ===\n false) {\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\n }\n else {\n this.textureLoader = new TextureLoader(this.doricContext, this.options.manager);\n }\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.textureLoader.setRequestHeader(this.options.requestHeader);\n this.fileLoader = new FileLoader(this.doricContext, this.options.manager);\n this.fileLoader.setResponseType(\"arraybuffer\");\n if (this.options.crossOrigin === \"use-credentials\") {\n this.fileLoader.setWithCredentials(true);\n }\n }\n setExtensions(extensions) {\n this.extensions = extensions;\n }\n setPlugins(plugins) {\n this.plugins = plugins;\n }\n parse(onLoad, onError) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n // Clear the loader cache\n this.cache.removeAll();\n // Mark the special nodes/meshes in json for efficient parse\n this._invokeAll(function (ext) {\n return ext._markDefs && ext._markDefs();\n });\n Promise.all(this._invokeAll(function (ext) {\n return ext.beforeRoot && ext.beforeRoot();\n }))\n .then(function () {\n return Promise.all([\n parser.getDependencies(\"scene\"),\n parser.getDependencies(\"animation\"),\n parser.getDependencies(\"camera\"),\n ]);\n })\n .then(function (dependencies) {\n const result = {\n scene: dependencies[0][json.scene || 0],\n scenes: dependencies[0],\n animations: dependencies[1],\n cameras: dependencies[2],\n asset: json.asset,\n parser: parser,\n userData: {},\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n assignExtrasToUserData(result, json);\n Promise.all(parser._invokeAll(function (ext) {\n return ext.afterRoot && ext.afterRoot(result);\n })).then(function () {\n onLoad(result);\n });\n })\n .catch(onError);\n }\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n _markDefs() {\n const nodeDefs = this.json.nodes || [];\n const skinDefs = this.json.skins || [];\n const meshDefs = this.json.meshes || [];\n // Nothing in the node definition indicates whether it is a Bone or an\n // Object3D. Use the skins' joint references to mark bones.\n for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n const joints = skinDefs[skinIndex].joints;\n for (let i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n }\n // Iterate over all nodes, marking references to shared resources,\n // as well as skeleton joints.\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n if (nodeDef.mesh !== undefined) {\n this._addNodeRef(this.meshCache, nodeDef.mesh);\n // Nothing in the mesh definition indicates whether it is\n // a SkinnedMesh or Mesh. Use the node's mesh reference\n // to mark SkinnedMesh if node has skin.\n if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n if (nodeDef.camera !== undefined) {\n this._addNodeRef(this.cameraCache, nodeDef.camera);\n }\n }\n }\n /**\n * Counts references to shared node / Object3D resources. These resources\n * can be reused, or \"instantiated\", at multiple nodes in the scene\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\n * Textures) can be reused directly and are not marked here.\n *\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n */\n _addNodeRef(cache, index) {\n if (index === undefined)\n return;\n if (cache.refs[index] === undefined) {\n cache.refs[index] = cache.uses[index] = 0;\n }\n cache.refs[index]++;\n }\n /** Returns a reference to a shared resource, cloning it if necessary. */\n _getNodeRef(cache, index, object) {\n if (cache.refs[index] <= 1)\n return object;\n const ref = object.clone();\n // Propagates mappings to the cloned object, prevents mappings on the\n // original object from being lost.\n const updateMappings = (original, clone) => {\n const mappings = this.associations.get(original);\n if (mappings != null) {\n this.associations.set(clone, mappings);\n }\n for (const [i, child] of original.children.entries()) {\n updateMappings(child, clone.children[i]);\n }\n };\n updateMappings(object, ref);\n ref.name += \"_instance_\" + cache.uses[index]++;\n return ref;\n }\n _invokeOne(func) {\n const extensions = Object.values(this.plugins);\n extensions.push(this);\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n return result;\n }\n return null;\n }\n _invokeAll(func) {\n const extensions = Object.values(this.plugins);\n extensions.unshift(this);\n const pending = [];\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result)\n pending.push(result);\n }\n return pending;\n }\n /**\n * Requests the specified dependency asynchronously, with caching.\n * @param {string} type\n * @param {number} index\n * @return {Promise}\n */\n getDependency(type, index) {\n const cacheKey = type + \":\" + index;\n let dependency = this.cache.get(cacheKey);\n if (!dependency) {\n switch (type) {\n case \"scene\":\n dependency = this.loadScene(index);\n break;\n case \"node\":\n dependency = this.loadNode(index);\n break;\n case \"mesh\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadMesh && ext.loadMesh(index);\n });\n break;\n case \"accessor\":\n dependency = this.loadAccessor(index);\n break;\n case \"bufferView\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadBufferView && ext.loadBufferView(index);\n });\n break;\n case \"buffer\":\n dependency = this.loadBuffer(index);\n break;\n case \"material\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadMaterial && ext.loadMaterial(index);\n });\n break;\n case \"texture\":\n dependency = this._invokeOne(function (ext) {\n return ext.loadTexture && ext.loadTexture(index);\n });\n break;\n case \"skin\":\n dependency = this.loadSkin(index);\n break;\n case \"animation\":\n dependency = this.loadAnimation(index);\n break;\n case \"camera\":\n dependency = this.loadCamera(index);\n break;\n default:\n throw new Error(\"Unknown type: \" + type);\n }\n this.cache.add(cacheKey, dependency);\n }\n return dependency;\n }\n /**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */\n getDependencies(type) {\n let dependencies = this.cache.get(type);\n if (!dependencies) {\n const parser = this;\n const defs = this.json[type + (type === \"mesh\" ? \"es\" : \"s\")] || [];\n dependencies = Promise.all(defs.map(function (def, index) {\n return parser.getDependency(type, index);\n }));\n this.cache.add(type, dependencies);\n }\n return dependencies;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */\n loadBuffer(bufferIndex) {\n const bufferDef = this.json.buffers[bufferIndex];\n const loader = this.fileLoader;\n if (bufferDef.type && bufferDef.type !== \"arraybuffer\") {\n throw new Error(\"THREE.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\");\n }\n // If present, GLB container is required to be the first buffer.\n if (bufferDef.uri === undefined && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n const options = this.options;\n return new Promise(function (resolve, reject) {\n loader.load({\n type: options.resType,\n url: LoaderUtils.resolveURL(bufferDef.uri, options.path),\n }, resolve, undefined, function () {\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */\n loadBufferView(bufferViewIndex) {\n const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency(\"buffer\", bufferViewDef.buffer).then(function (buffer) {\n const byteLength = bufferViewDef.byteLength || 0;\n const byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */\n loadAccessor(accessorIndex) {\n const parser = this;\n const json = this.json;\n const accessorDef = this.json.accessors[accessorIndex];\n if (accessorDef.bufferView === undefined &&\n accessorDef.sparse === undefined) {\n // Ignore empty accessors, which may be used to declare runtime\n // information about attributes coming from another source (e.g. Draco\n // compression extension).\n return Promise.resolve(null);\n }\n const pendingBufferViews = [];\n if (accessorDef.bufferView !== undefined) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.bufferView));\n }\n else {\n pendingBufferViews.push(null);\n }\n if (accessorDef.sparse !== undefined) {\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.values.bufferView));\n }\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\n const bufferView = bufferViews[0];\n const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n const itemBytes = elementBytes * itemSize;\n const byteOffset = accessorDef.byteOffset || 0;\n const byteStride = accessorDef.bufferView !== undefined\n ? json.bufferViews[accessorDef.bufferView].byteStride\n : undefined;\n const normalized = accessorDef.normalized === true;\n let array, bufferAttribute;\n // The buffer is not interleaved if the stride is the item size in bytes.\n if (byteStride && byteStride !== itemBytes) {\n // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n // This makes sure that IBA.count reflects accessor.count properly\n const ibSlice = Math.floor(byteOffset / byteStride);\n const ibCacheKey = \"InterleavedBuffer:\" +\n accessorDef.bufferView +\n \":\" +\n accessorDef.componentType +\n \":\" +\n ibSlice +\n \":\" +\n accessorDef.count;\n let ib = parser.cache.get(ibCacheKey);\n if (!ib) {\n array = new TypedArray(bufferView, ibSlice * byteStride, (accessorDef.count * byteStride) / elementBytes);\n // Integer parameters to IB/IBA are in array elements, not bytes.\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, (byteOffset % byteStride) / elementBytes, normalized);\n }\n else {\n if (bufferView === null) {\n array = new TypedArray(accessorDef.count * itemSize);\n }\n else {\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n }\n bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n }\n // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n if (accessorDef.sparse !== undefined) {\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n if (bufferView !== null) {\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n }\n for (let i = 0, il = sparseIndices.length; i < il; i++) {\n const index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2)\n bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3)\n bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4)\n bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5)\n throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");\n }\n }\n return bufferAttribute;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */\n loadTexture(textureIndex) {\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const source = json.images[textureDef.source];\n let loader = this.textureLoader;\n if (source.uri) {\n const handler = options.manager.getHandler(source.uri);\n if (handler !== null)\n loader = handler;\n }\n return this.loadTextureImage(textureIndex, source, loader);\n }\n loadTextureImage(textureIndex, source, loader) {\n const parser = this;\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const cacheKey = (source.uri || source.bufferView) + \":\" + textureDef.sampler;\n if (this.textureCache[cacheKey]) {\n // See https://github.com/mrdoob/three.js/issues/21559.\n return this.textureCache[cacheKey];\n }\n //const URL = self.URL || self.webkitURL;\n let sourceURI = source.uri || \"\";\n let isObjectURL = false;\n if (source.bufferView !== undefined) {\n // Load binary image data from bufferView, if provided.\n sourceURI = parser\n .getDependency(\"bufferView\", source.bufferView)\n .then(function (bufferView) {\n isObjectURL = true;\n const blob = new Blob([bufferView], { type: source.mimeType });\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n }\n else if (source.uri === undefined) {\n throw new Error(\"THREE.GLTFLoader: Image \" +\n textureIndex +\n \" is missing URI and bufferView\");\n }\n const promise = Promise.resolve(sourceURI)\n .then(function (sourceURI) {\n return new Promise(function (resolve, reject) {\n let onLoad = resolve;\n if (loader.isImageBitmapLoader === true) {\n onLoad = function (imageBitmap) {\n const texture = new Texture(imageBitmap);\n texture.needsUpdate = true;\n resolve(texture);\n };\n }\n loader.load({\n url: LoaderUtils.resolveURL(sourceURI, options.path),\n type: options.resType,\n }, onLoad, undefined, reject);\n });\n })\n .then(function (texture) {\n // Clean up resources and configure Texture.\n if (isObjectURL === true) {\n //URL.revokeObjectURL(sourceURI);\n }\n texture.flipY = false;\n if (textureDef.name)\n texture.name = textureDef.name;\n const samplers = json.samplers || {};\n const sampler = samplers[textureDef.sampler] || {};\n // texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n // texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n parser.associations.set(texture, { textures: textureIndex });\n return texture;\n })\n .catch(function () {\n console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n return null;\n });\n this.textureCache[cacheKey] = promise;\n return promise;\n }\n /**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */\n assignTexture(materialParams, mapName, mapDef) {\n const parser = this;\n return this.getDependency(\"texture\", mapDef.index).then(function (texture) {\n // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n // However, we will copy UV set 0 to UV set 1 on demand for aoMap\n if (mapDef.texCoord !== undefined &&\n mapDef.texCoord != 0 &&\n !(mapName === \"aoMap\" && mapDef.texCoord == 1)) {\n console.warn(\"THREE.GLTFLoader: Custom UV set \" +\n mapDef.texCoord +\n \" for texture \" +\n mapName +\n \" not yet supported.\");\n }\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n const transform = mapDef.extensions !== undefined\n ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]\n : undefined;\n if (transform) {\n const gltfReference = parser.associations.get(texture);\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n parser.associations.set(texture, gltfReference);\n }\n }\n materialParams[mapName] = texture;\n return texture;\n });\n }\n /**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accommodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {Object3D} mesh Mesh, Line, or Points instance.\n */\n assignFinalMaterial(mesh) {\n const geometry = mesh.geometry;\n let material = mesh.material;\n const useDerivativeTangents = geometry.attributes.tangent === undefined;\n const useVertexColors = geometry.attributes.color !== undefined;\n const useFlatShading = geometry.attributes.normal === undefined;\n if (mesh.isPoints) {\n const cacheKey = \"PointsMaterial:\" + material.uuid;\n let pointsMaterial = this.cache.get(cacheKey);\n if (!pointsMaterial) {\n pointsMaterial = new PointsMaterial();\n Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n this.cache.add(cacheKey, pointsMaterial);\n }\n material = pointsMaterial;\n }\n else if (mesh.isLine) {\n const cacheKey = \"LineBasicMaterial:\" + material.uuid;\n let lineMaterial = this.cache.get(cacheKey);\n if (!lineMaterial) {\n lineMaterial = new LineBasicMaterial();\n Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n this.cache.add(cacheKey, lineMaterial);\n }\n material = lineMaterial;\n }\n // Clone the material if it will be modified\n if (useDerivativeTangents || useVertexColors || useFlatShading) {\n let cacheKey = \"ClonedMaterial:\" + material.uuid + \":\";\n if (material.isGLTFSpecularGlossinessMaterial)\n cacheKey += \"specular-glossiness:\";\n if (useDerivativeTangents)\n cacheKey += \"derivative-tangents:\";\n if (useVertexColors)\n cacheKey += \"vertex-colors:\";\n if (useFlatShading)\n cacheKey += \"flat-shading:\";\n let cachedMaterial = this.cache.get(cacheKey);\n if (!cachedMaterial) {\n cachedMaterial = material.clone();\n if (useVertexColors)\n cachedMaterial.vertexColors = true;\n if (useFlatShading)\n cachedMaterial.flatShading = true;\n if (useDerivativeTangents) {\n // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n if (cachedMaterial.normalScale)\n cachedMaterial.normalScale.y *= -1;\n if (cachedMaterial.clearcoatNormalScale)\n cachedMaterial.clearcoatNormalScale.y *= -1;\n }\n this.cache.add(cacheKey, cachedMaterial);\n this.associations.set(cachedMaterial, this.associations.get(material));\n }\n material = cachedMaterial;\n }\n // workarounds for mesh and geometry\n if (material.aoMap &&\n geometry.attributes.uv2 === undefined &&\n geometry.attributes.uv !== undefined) {\n geometry.setAttribute(\"uv2\", geometry.attributes.uv);\n }\n mesh.material = material;\n }\n getMaterialType( /* materialIndex */) {\n return MeshStandardMaterial;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */\n loadMaterial(materialIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const materialDef = json.materials[materialIndex];\n let materialType;\n const materialParams = {};\n const materialExtensions = materialDef.extensions || {};\n const pending = [];\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n const sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n materialType = sgExtension.getMaterialType();\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n }\n else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n }\n else {\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture));\n }\n materialParams.metalness =\n metallicRoughness.metallicFactor !== undefined\n ? metallicRoughness.metallicFactor\n : 1.0;\n materialParams.roughness =\n metallicRoughness.roughnessFactor !== undefined\n ? metallicRoughness.roughnessFactor\n : 1.0;\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, \"metalnessMap\", metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, \"roughnessMap\", metallicRoughness.metallicRoughnessTexture));\n }\n materialType = this._invokeOne(function (ext) {\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\n });\n pending.push(Promise.all(this._invokeAll(function (ext) {\n return (ext.extendMaterialParams &&\n ext.extendMaterialParams(materialIndex, materialParams));\n })));\n }\n if (materialDef.doubleSided === true) {\n materialParams.side = DoubleSide;\n }\n const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true;\n // See: https://github.com/mrdoob/three.js/issues/17706\n materialParams.depthWrite = false;\n }\n else {\n materialParams.transparent = false;\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest =\n materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n }\n }\n if (materialDef.normalTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"normalMap\", materialDef.normalTexture));\n materialParams.normalScale = new Vector2(1, 1);\n if (materialDef.normalTexture.scale !== undefined) {\n const scale = materialDef.normalTexture.scale;\n materialParams.normalScale.set(scale, scale);\n }\n }\n if (materialDef.occlusionTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"aoMap\", materialDef.occlusionTexture));\n if (materialDef.occlusionTexture.strength !== undefined) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n if (materialDef.emissiveFactor !== undefined &&\n materialType !== MeshBasicMaterial) {\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n }\n if (materialDef.emissiveTexture !== undefined &&\n materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, \"emissiveMap\", materialDef.emissiveTexture));\n }\n return Promise.all(pending).then(function () {\n let material;\n if (materialType === GLTFMeshStandardSGMaterial) {\n material =\n extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n }\n else {\n material = new materialType(materialParams);\n }\n if (materialDef.name)\n material.name = materialDef.name;\n // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n if (material.map)\n material.map.encoding = sRGBEncoding;\n if (material.emissiveMap)\n material.emissiveMap.encoding = sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n parser.associations.set(material, { materials: materialIndex });\n if (materialDef.extensions)\n addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n }\n /** When Object3D instances are targeted by animation, they need unique names. */\n createUniqueName(originalName) {\n const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || \"\");\n let name = sanitizedName;\n for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n name = sanitizedName + \"_\" + i;\n }\n this.nodeNamesUsed[name] = true;\n return name;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */\n loadGeometries(primitives) {\n const parser = this;\n const extensions = this.extensions;\n const cache = this.primitiveCache;\n function createDracoPrimitive(primitive) {\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]\n .decodePrimitive(primitive, parser)\n .then(function (geometry) {\n return addPrimitiveAttributes(geometry, primitive, parser);\n });\n }\n const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const primitive = primitives[i];\n const cacheKey = createPrimitiveKey(primitive);\n // See if we've already created this geometry\n const cached = cache[cacheKey];\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached.promise);\n }\n else {\n let geometryPromise;\n if (primitive.extensions &&\n primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n // Use DRACO geometry if available\n geometryPromise = createDracoPrimitive(primitive);\n }\n else {\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n }\n // Cache this geometry\n cache[cacheKey] = { primitive: primitive, promise: geometryPromise };\n pending.push(geometryPromise);\n }\n }\n return Promise.all(pending);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n * @param {number} meshIndex\n * @return {Promise}\n */\n loadMesh(meshIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const meshDef = json.meshes[meshIndex];\n const primitives = meshDef.primitives;\n const pending = [];\n for (let i = 0, il = primitives.length; i < il; i++) {\n const material = primitives[i].material === undefined\n ? createDefaultMaterial(this.cache)\n : this.getDependency(\"material\", primitives[i].material);\n pending.push(material);\n }\n pending.push(parser.loadGeometries(primitives));\n return Promise.all(pending).then(function (results) {\n const materials = results.slice(0, results.length - 1);\n const geometries = results[results.length - 1];\n const meshes = [];\n for (let i = 0, il = geometries.length; i < il; i++) {\n const geometry = geometries[i];\n const primitive = primitives[i];\n // 1. create Mesh\n let mesh;\n const material = materials[i];\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n primitive.mode === undefined) {\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n mesh =\n meshDef.isSkinnedMesh === true\n ? new SkinnedMesh(geometry, material)\n : new Mesh(geometry, material);\n if (mesh.isSkinnedMesh === true &&\n !mesh.geometry.attributes.skinWeight.normalized) {\n // we normalize floating point skin weight array to fix malformed assets (see #15319)\n // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n mesh.normalizeSkinWeights();\n }\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n }\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new LineSegments(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new Line(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new LineLoop(geometry, material);\n }\n else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new Points(geometry, material);\n }\n else {\n throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \" + primitive.mode);\n }\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n mesh.name = parser.createUniqueName(meshDef.name || \"mesh_\" + meshIndex);\n assignExtrasToUserData(mesh, meshDef);\n if (primitive.extensions)\n addUnknownExtensionsToUserData(extensions, mesh, primitive);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n for (let i = 0, il = meshes.length; i < il; i++) {\n parser.associations.set(meshes[i], {\n meshes: meshIndex,\n primitives: i,\n });\n }\n if (meshes.length === 1) {\n return meshes[0];\n }\n const group = new Group();\n parser.associations.set(group, { meshes: meshIndex });\n for (let i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n return group;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n * @param {number} cameraIndex\n * @return {Promise}\n */\n loadCamera(cameraIndex) {\n let camera;\n const cameraDef = this.json.cameras[cameraIndex];\n const params = cameraDef[cameraDef.type];\n if (!params) {\n console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");\n return;\n }\n if (cameraDef.type === \"perspective\") {\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n }\n else if (cameraDef.type === \"orthographic\") {\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n }\n if (cameraDef.name)\n camera.name = this.createUniqueName(cameraDef.name);\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */\n loadSkin(skinIndex) {\n const skinDef = this.json.skins[skinIndex];\n const skinEntry = { joints: skinDef.joints };\n if (skinDef.inverseBindMatrices === undefined) {\n return Promise.resolve(skinEntry);\n }\n return this.getDependency(\"accessor\", skinDef.inverseBindMatrices).then(function (accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n * @param {number} animationIndex\n * @return {Promise}\n */\n loadAnimation(animationIndex) {\n const json = this.json;\n const animationDef = json.animations[animationIndex];\n const pendingNodes = [];\n const pendingInputAccessors = [];\n const pendingOutputAccessors = [];\n const pendingSamplers = [];\n const pendingTargets = [];\n for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n const channel = animationDef.channels[i];\n const sampler = animationDef.samplers[channel.sampler];\n const target = channel.target;\n const name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n const input = animationDef.parameters !== undefined\n ? animationDef.parameters[sampler.input]\n : sampler.input;\n const output = animationDef.parameters !== undefined\n ? animationDef.parameters[sampler.output]\n : sampler.output;\n pendingNodes.push(this.getDependency(\"node\", name));\n pendingInputAccessors.push(this.getDependency(\"accessor\", input));\n pendingOutputAccessors.push(this.getDependency(\"accessor\", output));\n pendingSamplers.push(sampler);\n pendingTargets.push(target);\n }\n return Promise.all([\n Promise.all(pendingNodes),\n Promise.all(pendingInputAccessors),\n Promise.all(pendingOutputAccessors),\n Promise.all(pendingSamplers),\n Promise.all(pendingTargets),\n ]).then(function (dependencies) {\n const nodes = dependencies[0];\n const inputAccessors = dependencies[1];\n const outputAccessors = dependencies[2];\n const samplers = dependencies[3];\n const targets = dependencies[4];\n const tracks = [];\n for (let i = 0, il = nodes.length; i < il; i++) {\n const node = nodes[i];\n const inputAccessor = inputAccessors[i];\n const outputAccessor = outputAccessors[i];\n const sampler = samplers[i];\n const target = targets[i];\n if (node === undefined)\n continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n let TypedKeyframeTrack;\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = NumberKeyframeTrack;\n break;\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = QuaternionKeyframeTrack;\n break;\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = VectorKeyframeTrack;\n break;\n }\n const targetName = node.name ? node.name : node.uuid;\n const interpolation = sampler.interpolation !== undefined\n ? INTERPOLATION[sampler.interpolation]\n : InterpolateLinear;\n const targetNames = [];\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n node.traverse(function (object) {\n if (object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n }\n else {\n targetNames.push(targetName);\n }\n let outputArray = outputAccessor.array;\n if (outputAccessor.normalized) {\n const scale = getNormalizedComponentScale(outputArray.constructor);\n const scaled = new Float32Array(outputArray.length);\n for (let j = 0, jl = outputArray.length; j < jl; j++) {\n scaled[j] = outputArray[j] * scale;\n }\n outputArray = scaled;\n }\n for (let j = 0, jl = targetNames.length; j < jl; j++) {\n const track = new TypedKeyframeTrack(targetNames[j] + \".\" + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation);\n // Override interpolation with custom factory method.\n if (sampler.interpolation === \"CUBICSPLINE\") {\n track.createInterpolant =\n function InterpolantFactoryMethodGLTFCubicSpline(result) {\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n // must be divided by three to get the interpolant's sampleSize argument.\n const interpolantType = this instanceof QuaternionKeyframeTrack\n ? GLTFCubicSplineQuaternionInterpolant\n : GLTFCubicSplineInterpolant;\n return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n };\n // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline =\n true;\n }\n tracks.push(track);\n }\n }\n const name = animationDef.name\n ? animationDef.name\n : \"animation_\" + animationIndex;\n return new AnimationClip(name, undefined, tracks);\n });\n }\n createNodeMesh(nodeIndex) {\n const json = this.json;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n if (nodeDef.mesh === undefined)\n return null;\n return parser.getDependency(\"mesh\", nodeDef.mesh).then(function (mesh) {\n const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\n // if weights are provided on the node, override weights on the mesh.\n if (nodeDef.weights !== undefined) {\n node.traverse(function (o) {\n if (!o.isMesh)\n return;\n for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n * @param {number} nodeIndex\n * @return {Promise}\n */\n loadNode(nodeIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n // reserve node's name before its dependencies, so the root has the intended name.\n const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : \"\";\n return (function () {\n const pending = [];\n const meshPromise = parser._invokeOne(function (ext) {\n return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n });\n if (meshPromise) {\n pending.push(meshPromise);\n }\n if (nodeDef.camera !== undefined) {\n pending.push(parser\n .getDependency(\"camera\", nodeDef.camera)\n .then(function (camera) {\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n }));\n }\n parser\n ._invokeAll(function (ext) {\n return (ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex));\n })\n .forEach(function (promise) {\n pending.push(promise);\n });\n return Promise.all(pending);\n })().then(function (objects) {\n let node;\n // .isBone isn't in glTF spec. See ._markDefs\n if (nodeDef.isBone === true) {\n node = new Bone();\n }\n else if (objects.length > 1) {\n node = new Group();\n }\n else if (objects.length === 1) {\n node = objects[0];\n }\n else {\n node = new Object3D();\n }\n if (node !== objects[0]) {\n for (let i = 0, il = objects.length; i < il; i++) {\n node.add(objects[i]);\n }\n }\n if (nodeDef.name) {\n node.userData.name = nodeDef.name;\n node.name = nodeName;\n }\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions)\n addUnknownExtensionsToUserData(extensions, node, nodeDef);\n if (nodeDef.matrix !== undefined) {\n const matrix = new Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix4(matrix);\n }\n else {\n if (nodeDef.translation !== undefined) {\n node.position.fromArray(nodeDef.translation);\n }\n if (nodeDef.rotation !== undefined) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n if (nodeDef.scale !== undefined) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n if (!parser.associations.has(node)) {\n parser.associations.set(node, {});\n }\n parser.associations.get(node).nodes = nodeIndex;\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n * @param {number} sceneIndex\n * @return {Promise}\n */\n loadScene(sceneIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const sceneDef = this.json.scenes[sceneIndex];\n const parser = this;\n // Loader returns Group, not Scene.\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n const scene = new Group();\n if (sceneDef.name)\n scene.name = parser.createUniqueName(sceneDef.name);\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions)\n addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n const nodeIds = sceneDef.nodes || [];\n const pending = [];\n for (let i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\n }\n return Promise.all(pending).then(function () {\n // Removes dangling associations, associations that reference a node that\n // didn't make it into the scene.\n const reduceAssociations = (node) => {\n const reducedAssociations = new Map();\n for (const [key, value] of parser.associations) {\n if (key instanceof Material || key instanceof Texture) {\n reducedAssociations.set(key, value);\n }\n }\n node.traverse((node) => {\n const mappings = parser.associations.get(node);\n if (mappings != null) {\n reducedAssociations.set(node, mappings);\n }\n });\n return reducedAssociations;\n };\n parser.associations = reduceAssociations(scene);\n return scene;\n });\n }\n}\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\n const nodeDef = json.nodes[nodeId];\n return parser\n .getDependency(\"node\", nodeId)\n .then(function (node) {\n if (nodeDef.skin === undefined)\n return node;\n // build skeleton here as well\n let skinEntry;\n return parser\n .getDependency(\"skin\", nodeDef.skin)\n .then(function (skin) {\n skinEntry = skin;\n const pendingJoints = [];\n for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency(\"node\", skinEntry.joints[i]));\n }\n return Promise.all(pendingJoints);\n })\n .then(function (jointNodes) {\n node.traverse(function (mesh) {\n if (!mesh.isMesh)\n return;\n const bones = [];\n const boneInverses = [];\n for (let j = 0, jl = jointNodes.length; j < jl; j++) {\n const jointNode = jointNodes[j];\n if (jointNode) {\n bones.push(jointNode);\n const mat = new Matrix4();\n if (skinEntry.inverseBindMatrices !== undefined) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n boneInverses.push(mat);\n }\n else {\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n });\n return node;\n });\n })\n .then(function (node) {\n // build node hierachy\n parentObject.add(node);\n const pending = [];\n if (nodeDef.children) {\n const children = nodeDef.children;\n for (let i = 0, il = children.length; i < il; i++) {\n const child = children[i];\n pending.push(buildNodeHierarchy(child, node, json, parser));\n }\n }\n return Promise.all(pending);\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const box = new Box3();\n if (attributes.POSITION !== undefined) {\n const accessor = parser.json.accessors[attributes.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n if (min !== undefined && max !== undefined) {\n box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n box.min.multiplyScalar(boxScale);\n box.max.multiplyScalar(boxScale);\n }\n }\n else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n return;\n }\n }\n else {\n return;\n }\n const targets = primitiveDef.targets;\n if (targets !== undefined) {\n const maxDisplacement = new Vector3();\n const vector = new Vector3();\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== undefined) {\n const accessor = parser.json.accessors[target.POSITION];\n const min = accessor.min;\n const max = accessor.max;\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n if (min !== undefined && max !== undefined) {\n // we need to get max of absolute components because target weight is [-1,1]\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n vector.multiplyScalar(boxScale);\n }\n // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n // are used to implement key-frame animations and as such only two are active at a time - this results in very large\n // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n maxDisplacement.max(vector);\n }\n else {\n console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n }\n }\n }\n // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n box.expandByVector(maxDisplacement);\n }\n geometry.boundingBox = box;\n const sphere = new Sphere();\n box.getCenter(sphere.center);\n sphere.radius = box.min.distanceTo(box.max) / 2;\n geometry.boundingSphere = sphere;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const pending = [];\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser\n .getDependency(\"accessor\", accessorIndex)\n .then(function (accessor) {\n geometry.setAttribute(attributeName, accessor);\n });\n }\n for (const gltfAttributeName in attributes) {\n const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\n // Skip attributes already provided by e.g. Draco extension.\n if (threeAttributeName in geometry.attributes)\n continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n if (primitiveDef.indices !== undefined && !geometry.index) {\n const accessor = parser\n .getDependency(\"accessor\", primitiveDef.indices)\n .then(function (accessor) {\n geometry.setIndex(accessor);\n });\n pending.push(accessor);\n }\n assignExtrasToUserData(geometry, primitiveDef);\n computeBounds(geometry, primitiveDef, parser);\n return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined\n ? addMorphTargets(geometry, primitiveDef.targets, parser)\n : geometry;\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode(geometry, drawMode) {\n let index = geometry.getIndex();\n // generate index if not present\n if (index === null) {\n const indices = [];\n const position = geometry.getAttribute(\"position\");\n if (position !== undefined) {\n for (let i = 0; i < position.count; i++) {\n indices.push(i);\n }\n geometry.setIndex(indices);\n index = geometry.getIndex();\n }\n else {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\");\n return geometry;\n }\n }\n //\n const numberOfTriangles = index.count - 2;\n const newIndices = [];\n if (drawMode === TriangleFanDrawMode) {\n // gl.TRIANGLE_FAN\n for (let i = 1; i <= numberOfTriangles; i++) {\n newIndices.push(index.getX(0));\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n }\n }\n else {\n // gl.TRIANGLE_STRIP\n for (let i = 0; i < numberOfTriangles; i++) {\n if (i % 2 === 0) {\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i + 2));\n }\n else {\n newIndices.push(index.getX(i + 2));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i));\n }\n }\n }\n if (newIndices.length / 3 !== numberOfTriangles) {\n console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");\n }\n // build final geometry\n const newGeometry = geometry.clone();\n newGeometry.setIndex(newIndices);\n return newGeometry;\n}\n//# sourceMappingURL=GLTFLoader.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { vsync } from \"dangle\";\nimport { layoutConfig, GestureContainer, loge, ViewComponent, } from \"doric\";\nimport THREE from \"three\";\nimport { OrbitControls } from \"./controls/OrbitControls\";\nimport { GLTFLoader } from \"./loaders/GLTFLoader\";\nimport { ThreeView } from \"./ThreeView\";\nlet GLTFView = class GLTFView extends GestureContainer {\n constructor() {\n super();\n this.touchable = true;\n this.threeView = new ThreeView();\n this.threeView.layoutConfig = layoutConfig().most();\n this.addChild(this.threeView);\n this.threeView.gesture = this;\n this.threeView.onInited = (renderer) => {\n if (!!!this.context) {\n throw new Error(\"Please set context for GLTFView\");\n }\n if (!!!this.res) {\n throw new Error(\"Please set resource for GLTFView\");\n }\n const scene = new THREE.Scene();\n scene.background = new THREE.Color(0xbfe3dd);\n const camera = new THREE.PerspectiveCamera(40, renderer.domElement.width / renderer.domElement.height, 1, 100);\n camera.position.set(5, 2, 8);\n {\n const skyColor = 0xffffff;\n const groundColor = 0xffffff; // brownish orange\n const intensity = 1;\n const light = new THREE.HemisphereLight(skyColor, groundColor, intensity);\n scene.add(light);\n }\n {\n const color = 0xffffff;\n const intensity = 1.5;\n const light = new THREE.DirectionalLight(color, intensity);\n light.position.set(5, 10, 2);\n scene.add(light);\n }\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.target.set(0, 0.5, 0);\n controls.update();\n controls.enablePan = false;\n controls.enableDamping = true;\n const loader = new GLTFLoader(this.context);\n let mixer;\n const clock = new THREE.Clock();\n const requestAnimationFrame = vsync(this.context).requestAnimationFrame;\n function animate() {\n requestAnimationFrame(animate);\n const delta = clock.getDelta();\n mixer.update(delta);\n controls.update();\n renderer.render(scene, camera);\n }\n try {\n loader.load(this.res, (gltf) => {\n var _a;\n (_a = this.onLoaded) === null || _a === void 0 ? void 0 : _a.call(this, gltf);\n const model = gltf.scene;\n model.position.set(1, 1, 0);\n model.scale.set(0.01, 0.01, 0.01);\n scene.add(model);\n mixer = new THREE.AnimationMixer(model);\n mixer.clipAction(gltf.animations[0]).play();\n animate();\n }, undefined, function (e) {\n loge(e);\n });\n }\n catch (error) {\n loge(error.stack);\n }\n };\n }\n};\nGLTFView = __decorate([\n ViewComponent,\n __metadata(\"design:paramtypes\", [])\n], GLTFView);\nexport { GLTFView };\n//# sourceMappingURL=GLTFView.js.map"],"names":["__decorate","this","__metadata","ThreeView","DangleView","THREE","ViewComponent","EventDispatcher","Vector3","MOUSE","TOUCH","Quaternion","Spherical","Vector2","console","loge","logw","log","Resource","Loader","Cache","resourceLoader","__awaiter","UnifiedResource","imageDecoder","LoaderUtils","Color","DirectionalLight","PointLight","SpotLight","MeshBasicMaterial","MeshPhysicalMaterial","sRGBEncoding","MeshStandardMaterial","TangentSpaceNormalMap","Interpolant","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","InterpolateLinear","InterpolateDiscrete","FrontSide","ImageBitmapLoader","InterleavedBuffer","InterleavedBufferAttribute","BufferAttribute","Texture","PointsMaterial","Material","LineBasicMaterial","DoubleSide","PropertyBinding","BufferGeometry","SkinnedMesh","Mesh","TriangleStripDrawMode","TriangleFanDrawMode","LineSegments","Line","LineLoop","Points","Group","PerspectiveCamera","MathUtils","OrthographicCamera","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","AnimationClip","Bone","Object3D","Matrix4","Skeleton","Box3","Sphere","GLTFView","GestureContainer","layoutConfig","vsync"],"mappings":"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"} \ No newline at end of file diff --git a/example/src/Example.tsx b/example/src/Example.tsx index ee99255..1b9cfe8 100644 --- a/example/src/Example.tsx +++ b/example/src/Example.tsx @@ -7,8 +7,13 @@ import { Image, VLayout, jsx, + GestureContainer, + createRef, + modal, } from "doric"; -import { GLTFView } from "doric-three"; +import THREE from "three"; +import { OrbitControls, ThreeView, loadGLTF } from "doric-three"; +import { vsync } from "dangle"; @Entry class Example extends Panel { @@ -16,15 +21,82 @@ class Example extends Panel { navbar(context).setTitle("GLTF"); } build(root: Group) { + const ref = createRef(); - + + { + const scene = new THREE.Scene(); + scene.background = new THREE.Color(0xbfe3dd); + const camera = new THREE.PerspectiveCamera( + 40, + renderer.domElement.width / renderer.domElement.height, + 1, + 100 + ); + camera.position.set(5, 2, 8); + { + const skyColor = 0xffffff; + const groundColor = 0xffffff; // brownish orange + const intensity = 1; + const light = new THREE.HemisphereLight( + skyColor, + groundColor, + intensity + ); + scene.add(light); + } + { + const color = 0xffffff; + const intensity = 1.5; + const light = new THREE.DirectionalLight(color, intensity); + light.position.set(5, 10, 2); + scene.add(light); + } + + const controls = new OrbitControls( + camera, + renderer.domElement + ) as any; + controls.target.set(0, 0.5, 0); + controls.update(); + controls.enablePan = false; + controls.enableDamping = true; + const requestAnimationFrame = vsync( + this.context + ).requestAnimationFrame; + try { + const gltf = await loadGLTF( + this.context, + new AssetsResource("threejs/LittlestTokyo/LittlestTokyo.gltf") + ); + let mixer: THREE.AnimationMixer; + const clock = new THREE.Clock(); + function animate() { + requestAnimationFrame(animate); + const delta = clock.getDelta(); + mixer.update(delta); + controls.update(); + renderer.render(scene, camera); + } + const model = gltf.scene; + model.position.set(1, 1, 0); + model.scale.set(0.01, 0.01, 0.01); + scene.add(model); + mixer = new THREE.AnimationMixer(model); + mixer.clipAction(gltf.animations[0]).play(); + animate(); + } catch (error) { + modal(this.context).alert(`${error}`); + } + }} + /> + ; } } diff --git a/index.ts b/index.ts index 69a557a..da822a9 100644 --- a/index.ts +++ b/index.ts @@ -1,2 +1,3 @@ export * from "./lib/ThreeView"; -export * from "./lib/GLTFView"; +export * from "./lib/controls/OrbitControls"; +export * from "./lib/loaders/GLTFLoader"; diff --git a/lib/GLTFView.ts b/lib/GLTFView.ts deleted file mode 100644 index eb48b5e..0000000 --- a/lib/GLTFView.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { vsync } from "dangle"; -import { - layoutConfig, - GestureContainer, - loge, - BridgeContext, - ViewComponent, - Resource, -} from "doric"; -import THREE from "three"; -import { OrbitControls } from "./controls/OrbitControls"; -import { GLTF, GLTFLoader } from "./loaders/GLTFLoader"; -import { ThreeView } from "./ThreeView"; - -@ViewComponent -export class GLTFView extends GestureContainer { - threeView: ThreeView; - touchable = true; - context?: BridgeContext; - res?: Resource; - onLoaded?: (gltf: GLTF) => void; - constructor() { - super(); - this.threeView = new ThreeView(); - this.threeView.layoutConfig = layoutConfig().most(); - this.addChild(this.threeView); - this.threeView.gesture = this; - this.threeView.onInited = (renderer) => { - if (!!!this.context) { - throw new Error("Please set context for GLTFView"); - } - if (!!!this.res) { - throw new Error("Please set resource for GLTFView"); - } - const scene = new THREE.Scene(); - scene.background = new THREE.Color(0xbfe3dd); - const camera = new THREE.PerspectiveCamera( - 40, - renderer.domElement.width / renderer.domElement.height, - 1, - 100 - ); - camera.position.set(5, 2, 8); - - { - const skyColor = 0xffffff; - const groundColor = 0xffffff; // brownish orange - const intensity = 1; - const light = new THREE.HemisphereLight( - skyColor, - groundColor, - intensity - ); - scene.add(light); - } - - { - const color = 0xffffff; - const intensity = 1.5; - const light = new THREE.DirectionalLight(color, intensity); - light.position.set(5, 10, 2); - scene.add(light); - } - - const controls = new OrbitControls(camera, renderer.domElement) as any; - controls.target.set(0, 0.5, 0); - controls.update(); - controls.enablePan = false; - controls.enableDamping = true; - const loader = new GLTFLoader(this.context); - let mixer: THREE.AnimationMixer; - const clock = new THREE.Clock(); - const requestAnimationFrame = vsync(this.context).requestAnimationFrame; - function animate() { - requestAnimationFrame(animate); - const delta = clock.getDelta(); - mixer.update(delta); - controls.update(); - renderer.render(scene, camera); - } - try { - loader.load( - this.res, - (gltf) => { - this.onLoaded?.(gltf); - const model = gltf.scene; - model.position.set(1, 1, 0); - model.scale.set(0.01, 0.01, 0.01); - scene.add(model); - mixer = new THREE.AnimationMixer(model); - mixer.clipAction(gltf.animations[0]).play(); - animate(); - }, - undefined, - function (e: any) { - loge(e); - } - ); - } catch (error: any) { - loge(error.stack); - } - }; - } -} diff --git a/lib/ThreeView.ts b/lib/ThreeView.ts index 330a01c..b988fa9 100644 --- a/lib/ThreeView.ts +++ b/lib/ThreeView.ts @@ -8,7 +8,7 @@ export class ThreeView extends DangleView { onInited?: (renderer: THREE.WebGLRenderer) => void; touchable = true; gl?: DangleWebGLRenderingContext; - + gestureRef?: Ref; isDirty() { this.gl?.endFrame(); return super.isDirty(); @@ -21,6 +21,9 @@ export class ThreeView extends DangleView { constructor() { super(); this.onReady = (gl: DangleWebGLRenderingContext) => { + if (this.gestureRef && this.gestureRef.current) { + this.gesture = this.gestureRef.current; + } this.gl = gl; const width = gl.drawingBufferWidth; const height = gl.drawingBufferHeight; @@ -94,7 +97,4 @@ export class ThreeView extends DangleView { } }; } - set gestureRef(ref: Ref) { - this.gesture = ref.current; - } } diff --git a/lib/loaders/GLTFLoader.ts b/lib/loaders/GLTFLoader.ts index 45cf45e..30e80bf 100644 --- a/lib/loaders/GLTFLoader.ts +++ b/lib/loaders/GLTFLoader.ts @@ -1,5 +1,5 @@ // @ts-nocheck -import { Resource } from "doric"; +import { Resource, BridgeContext } from "doric"; import { AnimationClip, Bone, @@ -74,6 +74,23 @@ export type GLTF = { parser: GLTFParser; userData: {}; }; + +export async function loadGLTF(context: BridgeContext, resource: Resource) { + const loader = new GLTFLoader(context); + return new Promise((resolve, reject) => { + loader.load( + resource, + (gltf) => { + resolve(gltf); + }, + undefined, + (e) => { + reject(e); + } + ); + }); +} + export class GLTFLoader extends Loader { doricContext: BridgeContext; constructor(doricContext: BridgeContext, manager?: LoadingManager) {