Copy disabled (too large)
Download .txt
Showing preview only (20,267K chars total). Download the full file to get everything.
Repository: king2088/vue-3d-loader
Branch: master
Commit: 287b4693785b
Files: 70
Total size: 19.3 MB
Directory structure:
gitextract_md_qcwnx/
├── .dockerignore
├── .gitignore
├── .npmignore
├── .vscode/
│ └── extensions.json
├── Dockerfile
├── LICENSE
├── dist/
│ ├── style.css
│ ├── types/
│ │ ├── 3dLoader/
│ │ │ └── vue3dLoader.vue.d.ts
│ │ └── index.d.ts
│ ├── vue-3d-loader.cjs.js
│ ├── vue-3d-loader.esm.js
│ └── vue-3d-loader.global.js
├── index.html
├── package.json
├── public/
│ ├── assets/
│ │ └── draco/
│ │ └── gltf/
│ │ ├── draco_decoder.js
│ │ ├── draco_decoder.wasm
│ │ ├── draco_encoder.js
│ │ └── draco_wasm_wrapper.js
│ └── models/
│ ├── collada/
│ │ ├── elf/
│ │ │ └── elf.dae
│ │ ├── pump/
│ │ │ └── pump.dae
│ │ └── stormtrooper/
│ │ └── stormtrooper.dae
│ ├── fbx/
│ │ ├── Samba Dancing.fbx
│ │ ├── nurbs.fbx
│ │ └── stanford-bunny.fbx
│ ├── gltf/
│ │ ├── DamagedHelmet.gltf
│ │ └── LittlestTokyo.glb
│ ├── json/
│ │ ├── lightmap.json
│ │ └── readme.txt
│ ├── obj/
│ │ ├── male02.mtl
│ │ ├── male02.obj
│ │ ├── readme.txt
│ │ └── tree.obj
│ ├── ply/
│ │ └── Lucy100k.ply
│ └── stl/
│ └── colored.stl
├── readme.md
├── readme_CN.md
├── scripts/
│ └── build-types.js
├── src/
│ ├── 3dLoader/
│ │ ├── loadModel.ts
│ │ └── vue3dLoader.vue
│ ├── App.vue
│ ├── env.d.ts
│ ├── examples/
│ │ ├── add-label.vue
│ │ ├── background-color-and-alpha.vue
│ │ ├── camera-position-and-rotate.vue
│ │ ├── clone-same-obj.vue
│ │ ├── disable-animations.vue
│ │ ├── enable-axes-grid.vue
│ │ ├── enable-damping.vue
│ │ ├── event-model.vue
│ │ ├── exampleIndex.vue
│ │ ├── height-and-width.vue
│ │ ├── interactive-controls.vue
│ │ ├── light-model.vue
│ │ ├── load-a-model.vue
│ │ ├── load-json-model.vue
│ │ ├── load-multiple-models.vue
│ │ ├── loader-draco-model.vue
│ │ ├── materials-and-textures.vue
│ │ ├── min-max-distance.vue
│ │ ├── parallel-load-models.vue
│ │ ├── point-light-follow-camera.vue
│ │ ├── progress-bar.vue
│ │ ├── rotate-model.vue
│ │ ├── set-vertical-horizontal.vue
│ │ └── show-fps.vue
│ ├── index.ts
│ └── main.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# model directories
# public/models
# public/assets
dist/models
dist/assets
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# model directories
# public/models
# public/assets
dist/models
dist/assets
examples-demo
================================================
FILE: .npmignore
================================================
# Ignore directories
.idea
.vscode
docs/
examples-demo/
public/
node_modules/
scripts/
src/
dist/models
dist/assets
# Ignore files
*.html
*.gif
*.md
tsconfig.json
tsconfig.node.json
vite.config.ts
.gitignore
================================================
FILE: .vscode/extensions.json
================================================
{
"recommendations": ["Vue.volar"]
}
================================================
FILE: Dockerfile
================================================
FROM node:latest as builder
# create work dir
WORKDIR /
# copy pakcage.json and pakcage-lock.json
COPY package*.json /
# npm i
RUN npm i --registry=https://registry.npm.taobao.org
# copy local dir to docker work dir
COPY . /
# build production
RUN npm run build:docker
FROM nginx:latest
LABEL maintainer="Tony Tao<king6180@gmail.com>"
# COPY nginx.conf /etc/nginx/
# copy /examples-demo dir to nginx html dir
COPY --from=builder /examples-demo/ /usr/share/nginx/html/
# port 8010
EXPOSE 8010
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2024 Tony Tao
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: dist/style.css
================================================
.viewer-container[data-v-e92274c2]{position:relative;width:100%;height:100%;margin:0;border:0;padding:0}.viewer-container div[data-v-e92274c2]{position:absolute!important;left:0px!important;opacity:1!important}.viewer-canvas[data-v-e92274c2]{width:100%;height:100%}
================================================
FILE: dist/types/3dLoader/vue3dLoader.vue.d.ts
================================================
import { Object3D, Vector2, Scene, Raycaster, WebGLRenderer, PerspectiveCamera, AnimationMixer, Clock, Light, AxesHelper, GridHelper } from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
export interface coordinates {
x: number;
y: number;
z: number;
}
export interface controlsValue {
min: number;
max: number;
}
declare type plyMaterial = 'MeshBasicMaterial' | 'MeshStandardMaterial';
declare type encode = "linear" | "sRGB";
declare const _default: import("vue").DefineComponent<{
filePath: {
type: (StringConstructor | ArrayConstructor)[];
required: true;
};
fileType: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
};
width: {
type: NumberConstructor;
required: false;
};
height: {
type: NumberConstructor;
required: false;
};
position: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
rotation: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
scale: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
lights: {
type: ArrayConstructor;
required: false;
default: () => ({
type: string;
color: number;
position?: undefined;
intensity?: undefined;
} | {
type: string;
position: {
x: number;
y: number;
z: number;
};
color: number;
intensity: number;
})[];
};
cameraPosition: {
type: ObjectConstructor;
required: false;
default: () => {
x: number;
y: number;
z: number;
};
};
cameraRotation: {
type: ObjectConstructor;
required: false;
};
cameraUp: {
type: ObjectConstructor;
required: false;
};
cameraLookAt: {
type: ObjectConstructor;
required: false;
};
backgroundColor: {
type: (StringConstructor | NumberConstructor)[];
required: false;
default: () => number;
};
backgroundAlpha: {
type: NumberConstructor;
required: false;
default: () => number;
};
controlsOptions: {
type: ObjectConstructor;
required: false;
};
crossOrigin: {
type: StringConstructor;
required: false;
default: string;
};
requestHeader: {
type: ObjectConstructor;
required: false;
};
outputEncoding: {
type: StringConstructor;
required: false;
default: () => string;
};
webGLRendererOptions: {
type: ObjectConstructor;
required: false;
default: () => {};
};
mtlPath: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
showFps: {
type: BooleanConstructor;
required: false;
default: boolean;
};
textureImage: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
clearScene: {
type: BooleanConstructor;
required: false;
default: boolean;
};
parallelLoad: {
type: BooleanConstructor;
required: false;
default: boolean;
};
labels: {
type: ArrayConstructor;
required: false;
default: () => never[];
};
autoPlay: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDraco: {
type: BooleanConstructor;
required: false;
default: boolean;
};
dracoDir: {
type: StringConstructor;
required: false;
};
intersectRecursive: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDamping: {
type: BooleanConstructor;
required: false;
};
dampingFactor: {
type: NumberConstructor;
required: false;
};
verticalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
horizontalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
plyMaterial: {
type: StringConstructor;
required: false;
default: string;
};
enableAxesHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
axesHelperSize: {
type: NumberConstructor;
required: false;
default: number;
};
enableGridHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
minDistance: {
type: NumberConstructor;
required: false;
default: number;
};
maxDistance: {
type: NumberConstructor;
required: false;
default: number;
};
pointLightFollowCamera: {
type: BooleanConstructor;
required: false;
};
}, {
props: {
filePath: string | string[];
fileType?: string | string[] | undefined;
width?: number | undefined;
height?: number | undefined;
position?: coordinates | coordinates[] | undefined;
rotation?: coordinates | coordinates[] | undefined;
scale?: coordinates | coordinates[] | undefined;
lights: object[];
cameraPosition: coordinates;
cameraRotation?: coordinates | undefined;
cameraUp?: coordinates | undefined;
cameraLookAt?: coordinates | undefined;
backgroundColor: number | string;
backgroundAlpha: number;
controlsOptions?: object | undefined;
crossOrigin: string;
requestHeader?: object | undefined;
outputEncoding: encode;
webGLRendererOptions: object;
mtlPath: string | string[];
showFps: boolean;
textureImage: string | string[];
clearScene: boolean;
parallelLoad: boolean;
labels: object[];
autoPlay: boolean;
enableDraco: boolean;
dracoDir?: string | undefined;
intersectRecursive: boolean;
enableDamping?: boolean | undefined;
dampingFactor?: number | undefined;
verticalCtrl: boolean | controlsValue;
horizontalCtrl: boolean | controlsValue;
plyMaterial: plyMaterial;
enableAxesHelper: boolean;
axesHelperSize: number;
enableGridHelper: boolean;
minDistance: number;
maxDistance: number;
pointLightFollowCamera?: boolean | undefined;
};
object: any;
raycaster: Raycaster;
mouse: Vector2;
camera: PerspectiveCamera;
clock: Clock;
scene: Scene;
renderer: WebGLRenderer;
controls: OrbitControls;
allLights: Light[];
loader: any;
requestAnimationId: number;
stats: any;
mixers: AnimationMixer | AnimationMixer[];
textureLoader: any;
axesHelper: AxesHelper;
gridHelper: GridHelper;
size: import("vue").Ref<{
width: number;
height: number;
}>;
loaderIndex: import("vue").Ref<number>;
objectPositionHasSet: import("vue").Ref<boolean>;
isMultipleModels: import("vue").Ref<boolean>;
containerElement: import("vue").Ref<null>;
canvasElement: import("vue").Ref<null>;
emit: (event: "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", ...args: any[]) => void;
resetScene: () => void;
destroyScene: () => void;
init: () => void;
setContainerElementStyle: (el: any) => void;
enableMousemoveEvent: (enable: boolean) => void;
onResize: () => void;
onMouseDown: (event: MouseEvent) => void;
onMouseMove: (event: MouseEvent) => void;
onMouseUp: (event: MouseEvent) => void;
onClick: (event: MouseEvent) => void;
onDblclick: (event: MouseEvent) => void;
pick: (x: number, y: number) => import("three").Intersection<Object3D<import("three").Event>> | null;
update: () => void;
updateModel: () => void;
updateRenderer: () => void;
updateCamera: (isResize?: boolean) => void;
updateLights: () => void;
updateControls: () => void;
loadModelSelect: () => void;
load: (fileIndex?: number) => void;
loadFilePath: (filePath: string, getObject: any, index: number) => void;
loadMtl: (filePath: string, getObject: any, index: number) => void;
getObject: (object: any) => any;
addObject: (obj: Object3D, filePath: string) => void;
animate: () => void;
render: () => void;
updateStats: () => void;
onProcess: (xhr: ProgressEvent) => void;
addTexture: (object: Object3D, texture: any) => void;
clearScene: () => void;
setObjectAttribute: (type: string, val: any) => void;
getAllObject: () => any;
setSpriteLabel: () => void;
clearSprite: () => void;
generateCanvas: (text: string, style: any) => HTMLCanvasElement;
getObjectIndex: (object: any) => any;
playAnimations: () => void;
playSingleModel: (item: Object3D) => void;
playMultipleModels: (obj: Object3D) => void;
setVerticalHorizontalControls: () => void;
setAxesAndGridHelper: () => void;
setLightFollowCamera: () => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error")[], "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
filePath: {
type: (StringConstructor | ArrayConstructor)[];
required: true;
};
fileType: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
};
width: {
type: NumberConstructor;
required: false;
};
height: {
type: NumberConstructor;
required: false;
};
position: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
rotation: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
scale: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
lights: {
type: ArrayConstructor;
required: false;
default: () => ({
type: string;
color: number;
position?: undefined;
intensity?: undefined;
} | {
type: string;
position: {
x: number;
y: number;
z: number;
};
color: number;
intensity: number;
})[];
};
cameraPosition: {
type: ObjectConstructor;
required: false;
default: () => {
x: number;
y: number;
z: number;
};
};
cameraRotation: {
type: ObjectConstructor;
required: false;
};
cameraUp: {
type: ObjectConstructor;
required: false;
};
cameraLookAt: {
type: ObjectConstructor;
required: false;
};
backgroundColor: {
type: (StringConstructor | NumberConstructor)[];
required: false;
default: () => number;
};
backgroundAlpha: {
type: NumberConstructor;
required: false;
default: () => number;
};
controlsOptions: {
type: ObjectConstructor;
required: false;
};
crossOrigin: {
type: StringConstructor;
required: false;
default: string;
};
requestHeader: {
type: ObjectConstructor;
required: false;
};
outputEncoding: {
type: StringConstructor;
required: false;
default: () => string;
};
webGLRendererOptions: {
type: ObjectConstructor;
required: false;
default: () => {};
};
mtlPath: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
showFps: {
type: BooleanConstructor;
required: false;
default: boolean;
};
textureImage: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
clearScene: {
type: BooleanConstructor;
required: false;
default: boolean;
};
parallelLoad: {
type: BooleanConstructor;
required: false;
default: boolean;
};
labels: {
type: ArrayConstructor;
required: false;
default: () => never[];
};
autoPlay: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDraco: {
type: BooleanConstructor;
required: false;
default: boolean;
};
dracoDir: {
type: StringConstructor;
required: false;
};
intersectRecursive: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDamping: {
type: BooleanConstructor;
required: false;
};
dampingFactor: {
type: NumberConstructor;
required: false;
};
verticalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
horizontalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
plyMaterial: {
type: StringConstructor;
required: false;
default: string;
};
enableAxesHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
axesHelperSize: {
type: NumberConstructor;
required: false;
default: number;
};
enableGridHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
minDistance: {
type: NumberConstructor;
required: false;
default: number;
};
maxDistance: {
type: NumberConstructor;
required: false;
default: number;
};
pointLightFollowCamera: {
type: BooleanConstructor;
required: false;
};
}>> & {
onMousedown?: ((...args: any[]) => any) | undefined;
onMousemove?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onClick?: ((...args: any[]) => any) | undefined;
onDblclick?: ((...args: any[]) => any) | undefined;
onLoad?: ((...args: any[]) => any) | undefined;
onProcess?: ((...args: any[]) => any) | undefined;
onError?: ((...args: any[]) => any) | undefined;
}, {
lights: unknown[];
cameraPosition: Record<string, any>;
backgroundColor: string | number;
backgroundAlpha: number;
crossOrigin: string;
outputEncoding: string;
webGLRendererOptions: Record<string, any>;
mtlPath: string | unknown[];
showFps: boolean;
textureImage: string | unknown[];
clearScene: boolean;
parallelLoad: boolean;
labels: unknown[];
autoPlay: boolean;
enableDraco: boolean;
intersectRecursive: boolean;
enableDamping: boolean;
verticalCtrl: boolean | Record<string, any>;
horizontalCtrl: boolean | Record<string, any>;
plyMaterial: string;
enableAxesHelper: boolean;
axesHelperSize: number;
enableGridHelper: boolean;
minDistance: number;
maxDistance: number;
pointLightFollowCamera: boolean;
}>;
export default _default;
================================================
FILE: dist/types/index.d.ts
================================================
import { App } from 'vue';
import * as Three from 'three';
import vue3dLoader from './3dLoader/vue3dLoader.vue';
export { Three };
declare const _default: {
install: (app: App<any>) => void;
vue3dLoader: import("vue").DefineComponent<{
filePath: {
type: (StringConstructor | ArrayConstructor)[];
required: true;
};
fileType: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
};
width: {
type: NumberConstructor;
required: false;
};
height: {
type: NumberConstructor;
required: false;
};
position: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
rotation: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
scale: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
lights: {
type: ArrayConstructor;
required: false;
default: () => ({
type: string;
color: number;
position?: undefined;
intensity?: undefined;
} | {
type: string;
position: {
x: number;
y: number;
z: number;
};
color: number;
intensity: number;
})[];
};
cameraPosition: {
type: ObjectConstructor;
required: false;
default: () => {
x: number;
y: number;
z: number;
};
};
cameraRotation: {
type: ObjectConstructor;
required: false;
};
cameraUp: {
type: ObjectConstructor;
required: false;
};
cameraLookAt: {
type: ObjectConstructor;
required: false;
};
backgroundColor: {
type: (StringConstructor | NumberConstructor)[];
required: false;
default: () => number;
};
backgroundAlpha: {
type: NumberConstructor;
required: false;
default: () => number;
};
controlsOptions: {
type: ObjectConstructor;
required: false;
};
crossOrigin: {
type: StringConstructor;
required: false;
default: string;
};
requestHeader: {
type: ObjectConstructor;
required: false;
};
outputEncoding: {
type: StringConstructor;
required: false;
default: () => string;
};
webGLRendererOptions: {
type: ObjectConstructor;
required: false;
default: () => {};
};
mtlPath: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
showFps: {
type: BooleanConstructor;
required: false;
default: boolean;
};
textureImage: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
clearScene: {
type: BooleanConstructor;
required: false;
default: boolean;
};
parallelLoad: {
type: BooleanConstructor;
required: false;
default: boolean;
};
labels: {
type: ArrayConstructor;
required: false;
default: () => never[];
};
autoPlay: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDraco: {
type: BooleanConstructor;
required: false;
default: boolean;
};
dracoDir: {
type: StringConstructor;
required: false;
};
intersectRecursive: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDamping: {
type: BooleanConstructor;
required: false;
};
dampingFactor: {
type: NumberConstructor;
required: false;
};
verticalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
horizontalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
plyMaterial: {
type: StringConstructor;
required: false;
default: string;
};
enableAxesHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
axesHelperSize: {
type: NumberConstructor;
required: false;
default: number;
};
enableGridHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
minDistance: {
type: NumberConstructor;
required: false;
default: number;
};
maxDistance: {
type: NumberConstructor;
required: false;
default: number;
};
pointLightFollowCamera: {
type: BooleanConstructor;
required: false;
};
}, {
props: {
filePath: string | string[];
fileType?: string | string[] | undefined;
width?: number | undefined;
height?: number | undefined;
position?: import("./3dLoader/vue3dLoader.vue").coordinates | import("./3dLoader/vue3dLoader.vue").coordinates[] | undefined;
rotation?: import("./3dLoader/vue3dLoader.vue").coordinates | import("./3dLoader/vue3dLoader.vue").coordinates[] | undefined;
scale?: import("./3dLoader/vue3dLoader.vue").coordinates | import("./3dLoader/vue3dLoader.vue").coordinates[] | undefined;
lights: object[];
cameraPosition: import("./3dLoader/vue3dLoader.vue").coordinates;
cameraRotation?: import("./3dLoader/vue3dLoader.vue").coordinates | undefined;
cameraUp?: import("./3dLoader/vue3dLoader.vue").coordinates | undefined;
cameraLookAt?: import("./3dLoader/vue3dLoader.vue").coordinates | undefined;
backgroundColor: string | number;
backgroundAlpha: number;
controlsOptions?: object | undefined;
crossOrigin: string;
requestHeader?: object | undefined;
outputEncoding: "linear" | "sRGB";
webGLRendererOptions: object;
mtlPath: string | string[];
showFps: boolean;
textureImage: string | string[];
clearScene: boolean;
parallelLoad: boolean;
labels: object[];
autoPlay: boolean;
enableDraco: boolean;
dracoDir?: string | undefined;
intersectRecursive: boolean;
enableDamping?: boolean | undefined;
dampingFactor?: number | undefined;
verticalCtrl: boolean | import("./3dLoader/vue3dLoader.vue").controlsValue;
horizontalCtrl: boolean | import("./3dLoader/vue3dLoader.vue").controlsValue;
plyMaterial: "MeshStandardMaterial" | "MeshBasicMaterial";
enableAxesHelper: boolean;
axesHelperSize: number;
enableGridHelper: boolean;
minDistance: number;
maxDistance: number;
pointLightFollowCamera?: boolean | undefined;
};
object: any;
raycaster: Three.Raycaster;
mouse: Three.Vector2;
camera: Three.PerspectiveCamera;
clock: Three.Clock;
scene: Three.Scene;
renderer: Three.WebGLRenderer;
controls: import("three/examples/jsm/controls/OrbitControls").OrbitControls;
allLights: Three.Light[];
loader: any;
requestAnimationId: number;
stats: any;
mixers: Three.AnimationMixer | Three.AnimationMixer[];
textureLoader: any;
axesHelper: Three.AxesHelper;
gridHelper: Three.GridHelper;
size: import("vue").Ref<{
width: number;
height: number;
}>;
loaderIndex: import("vue").Ref<number>;
objectPositionHasSet: import("vue").Ref<boolean>;
isMultipleModels: import("vue").Ref<boolean>;
containerElement: import("vue").Ref<null>;
canvasElement: import("vue").Ref<null>;
emit: (event: "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", ...args: any[]) => void;
resetScene: () => void;
destroyScene: () => void;
init: () => void;
setContainerElementStyle: (el: any) => void;
enableMousemoveEvent: (enable: boolean) => void;
onResize: () => void;
onMouseDown: (event: MouseEvent) => void;
onMouseMove: (event: MouseEvent) => void;
onMouseUp: (event: MouseEvent) => void;
onClick: (event: MouseEvent) => void;
onDblclick: (event: MouseEvent) => void;
pick: (x: number, y: number) => Three.Intersection<Three.Object3D<Three.Event>> | null;
update: () => void;
updateModel: () => void;
updateRenderer: () => void;
updateCamera: (isResize?: boolean | undefined) => void;
updateLights: () => void;
updateControls: () => void;
loadModelSelect: () => void;
load: (fileIndex?: number | undefined) => void;
loadFilePath: (filePath: string, getObject: any, index: number) => void;
loadMtl: (filePath: string, getObject: any, index: number) => void;
getObject: (object: any) => any;
addObject: (obj: Three.Object3D<Three.Event>, filePath: string) => void;
animate: () => void;
render: () => void;
updateStats: () => void;
onProcess: (xhr: ProgressEvent<EventTarget>) => void;
addTexture: (object: Three.Object3D<Three.Event>, texture: any) => void;
clearScene: () => void;
setObjectAttribute: (type: string, val: any) => void;
getAllObject: () => any;
setSpriteLabel: () => void;
clearSprite: () => void;
generateCanvas: (text: string, style: any) => HTMLCanvasElement;
getObjectIndex: (object: any) => any;
playAnimations: () => void;
playSingleModel: (item: Three.Object3D<Three.Event>) => void;
playMultipleModels: (obj: Three.Object3D<Three.Event>) => void;
setVerticalHorizontalControls: () => void;
setAxesAndGridHelper: () => void;
setLightFollowCamera: () => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error")[], "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
filePath: {
type: (StringConstructor | ArrayConstructor)[];
required: true;
};
fileType: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
};
width: {
type: NumberConstructor;
required: false;
};
height: {
type: NumberConstructor;
required: false;
};
position: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
rotation: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
scale: {
type: (ArrayConstructor | ObjectConstructor)[];
required: false;
};
lights: {
type: ArrayConstructor;
required: false;
default: () => ({
type: string;
color: number;
position?: undefined;
intensity?: undefined;
} | {
type: string;
position: {
x: number;
y: number;
z: number;
};
color: number;
intensity: number;
})[];
};
cameraPosition: {
type: ObjectConstructor;
required: false;
default: () => {
x: number;
y: number;
z: number;
};
};
cameraRotation: {
type: ObjectConstructor;
required: false;
};
cameraUp: {
type: ObjectConstructor;
required: false;
};
cameraLookAt: {
type: ObjectConstructor;
required: false;
};
backgroundColor: {
type: (StringConstructor | NumberConstructor)[];
required: false;
default: () => number;
};
backgroundAlpha: {
type: NumberConstructor;
required: false;
default: () => number;
};
controlsOptions: {
type: ObjectConstructor;
required: false;
};
crossOrigin: {
type: StringConstructor;
required: false;
default: string;
};
requestHeader: {
type: ObjectConstructor;
required: false;
};
outputEncoding: {
type: StringConstructor;
required: false;
default: () => string;
};
webGLRendererOptions: {
type: ObjectConstructor;
required: false;
default: () => {};
};
mtlPath: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
showFps: {
type: BooleanConstructor;
required: false;
default: boolean;
};
textureImage: {
type: (StringConstructor | ArrayConstructor)[];
required: false;
default: string;
};
clearScene: {
type: BooleanConstructor;
required: false;
default: boolean;
};
parallelLoad: {
type: BooleanConstructor;
required: false;
default: boolean;
};
labels: {
type: ArrayConstructor;
required: false;
default: () => never[];
};
autoPlay: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDraco: {
type: BooleanConstructor;
required: false;
default: boolean;
};
dracoDir: {
type: StringConstructor;
required: false;
};
intersectRecursive: {
type: BooleanConstructor;
required: false;
default: boolean;
};
enableDamping: {
type: BooleanConstructor;
required: false;
};
dampingFactor: {
type: NumberConstructor;
required: false;
};
verticalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
horizontalCtrl: {
type: (ObjectConstructor | BooleanConstructor)[];
required: false;
default: boolean;
};
plyMaterial: {
type: StringConstructor;
required: false;
default: string;
};
enableAxesHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
axesHelperSize: {
type: NumberConstructor;
required: false;
default: number;
};
enableGridHelper: {
type: BooleanConstructor;
required: false;
default: boolean;
};
minDistance: {
type: NumberConstructor;
required: false;
default: number;
};
maxDistance: {
type: NumberConstructor;
required: false;
default: number;
};
pointLightFollowCamera: {
type: BooleanConstructor;
required: false;
};
}>> & {
onMousedown?: ((...args: any[]) => any) | undefined;
onMousemove?: ((...args: any[]) => any) | undefined;
onMouseup?: ((...args: any[]) => any) | undefined;
onClick?: ((...args: any[]) => any) | undefined;
onDblclick?: ((...args: any[]) => any) | undefined;
onLoad?: ((...args: any[]) => any) | undefined;
onProcess?: ((...args: any[]) => any) | undefined;
onError?: ((...args: any[]) => any) | undefined;
}, {
lights: unknown[];
cameraPosition: Record<string, any>;
backgroundColor: string | number;
backgroundAlpha: number;
crossOrigin: string;
outputEncoding: string;
webGLRendererOptions: Record<string, any>;
mtlPath: string | unknown[];
showFps: boolean;
textureImage: string | unknown[];
clearScene: boolean;
parallelLoad: boolean;
labels: unknown[];
autoPlay: boolean;
enableDraco: boolean;
intersectRecursive: boolean;
enableDamping: boolean;
verticalCtrl: boolean | Record<string, any>;
horizontalCtrl: boolean | Record<string, any>;
plyMaterial: string;
enableAxesHelper: boolean;
axesHelperSize: number;
enableGridHelper: boolean;
minDistance: number;
maxDistance: number;
pointLightFollowCamera: boolean;
}>;
};
export default _default;
export { vue3dLoader };
================================================
FILE: dist/vue-3d-loader.cjs.js
================================================
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Et=require("vue");/**
* @license
* Copyright 2010-2022 Three.js Authors
* SPDX-License-Identifier: MIT
*/const ml="143",ms={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},gs={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},hd=0,Cc=1,fd=2,tg=3,ng=0,wu=1,dd=2,mr=3,bi=0,kn=1,wi=2,pd=1,ig=2,_i=0,Ts=1,Lc=2,Rc=3,Ic=4,md=5,vs=100,gd=101,yd=102,Pc=103,Dc=104,xd=200,vd=201,_d=202,bd=203,Mu=204,Su=205,wd=206,Md=207,Sd=208,Td=209,Ad=210,Ed=0,Cd=1,Ld=2,il=3,Rd=4,Id=5,Pd=6,Dd=7,zo=0,Fd=1,Nd=2,Qn=0,kd=1,Od=2,Bd=3,zd=4,Ud=5,gl=300,Yi=301,Zi=302,br=303,wo=304,Gr=306,fn=1e3,Zt=1001,wr=1002,Gt=1003,Mo=1004,sg=1004,So=1005,rg=1005,Ft=1006,yl=1007,og=1007,oi=1008,ag=1008,Ki=1009,Gd=1010,Vd=1011,Tu=1012,Hd=1013,Hi=1014,xi=1015,Mr=1016,Wd=1017,qd=1018,As=1020,Xd=1021,jd=1022,An=1023,Yd=1024,Zd=1025,Xi=1026,Rs=1027,Kd=1028,Jd=1029,$d=1030,Qd=1031,ep=1033,fo=33776,Ya=33777,po=33778,mo=33779,Fc=35840,Nc=35841,kc=35842,Oc=35843,Au=36196,Bc=37492,zc=37496,Uc=37808,Gc=37809,Vc=37810,Hc=37811,Wc=37812,qc=37813,Xc=37814,jc=37815,Yc=37816,Zc=37817,Kc=37818,Jc=37819,$c=37820,Qc=37821,eu=36492,tp=2200,np=2201,ip=2202,Sr=2300,Is=2301,Za=2302,bs=2400,ws=2401,To=2402,xl=2500,Eu=2501,lg=0,sp=1,Cu=2,Mi=3e3,it=3001,rp=3200,op=3201,ns=0,ap=1,cg="",Jn="srgb",Wi="srgb-linear",ug=0,Ka=7680,hg=7681,fg=7682,dg=7683,pg=34055,mg=34056,gg=5386,yg=512,xg=513,vg=514,_g=515,bg=516,wg=517,Mg=518,lp=519,Ao=35044,Sg=35048,Tg=35040,Ag=35045,Eg=35049,Cg=35041,Lg=35046,Rg=35050,Ig=35042,Pg="100",tu="300 es",sl=1035;class ai{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const i=this._listeners[e];if(i!==void 0){const s=i.indexOf(t);s!==-1&&i.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const n=this._listeners[e.type];if(n!==void 0){e.target=this;const i=n.slice(0);for(let s=0,r=i.length;s<r;s++)i[s].call(this,e);e.target=null}}}const on=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let _h=1234567;const Es=Math.PI/180,Eo=180/Math.PI;function En(){const a=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(on[a&255]+on[a>>8&255]+on[a>>16&255]+on[a>>24&255]+"-"+on[e&255]+on[e>>8&255]+"-"+on[e>>16&15|64]+on[e>>24&255]+"-"+on[t&63|128]+on[t>>8&255]+"-"+on[t>>16&255]+on[t>>24&255]+on[n&255]+on[n>>8&255]+on[n>>16&255]+on[n>>24&255]).toLowerCase()}function Vt(a,e,t){return Math.max(e,Math.min(t,a))}function Lu(a,e){return(a%e+e)%e}function Dg(a,e,t,n,i){return n+(a-e)*(i-n)/(t-e)}function Fg(a,e,t){return a!==e?(t-a)/(e-a):0}function go(a,e,t){return(1-t)*a+t*e}function Ng(a,e,t,n){return go(a,e,1-Math.exp(-t*n))}function kg(a,e=1){return e-Math.abs(Lu(a,e*2)-e)}function Og(a,e,t){return a<=e?0:a>=t?1:(a=(a-e)/(t-e),a*a*(3-2*a))}function Bg(a,e,t){return a<=e?0:a>=t?1:(a=(a-e)/(t-e),a*a*a*(a*(a*6-15)+10))}function zg(a,e){return a+Math.floor(Math.random()*(e-a+1))}function Ug(a,e){return a+Math.random()*(e-a)}function Gg(a){return a*(.5-Math.random())}function Vg(a){a!==void 0&&(_h=a);let e=_h+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Hg(a){return a*Es}function Wg(a){return a*Eo}function nu(a){return(a&a-1)===0&&a!==0}function cp(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))}function rl(a){return Math.pow(2,Math.floor(Math.log(a)/Math.LN2))}function qg(a,e,t,n,i){const s=Math.cos,r=Math.sin,o=s(t/2),l=r(t/2),c=s((e+n)/2),h=r((e+n)/2),u=s((e-n)/2),f=r((e-n)/2),d=s((n-e)/2),p=r((n-e)/2);switch(i){case"XYX":a.set(o*h,l*u,l*f,o*c);break;case"YZY":a.set(l*f,o*h,l*u,o*c);break;case"ZXZ":a.set(l*u,l*f,o*h,o*c);break;case"XZX":a.set(o*h,l*p,l*d,o*c);break;case"YXY":a.set(l*d,o*h,l*p,o*c);break;case"ZYZ":a.set(l*p,l*d,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Xg(a,e){switch(e.constructor){case Float32Array:return a;case Uint16Array:return a/65535;case Uint8Array:return a/255;case Int16Array:return Math.max(a/32767,-1);case Int8Array:return Math.max(a/127,-1);default:throw new Error("Invalid component type.")}}function jg(a,e){switch(e.constructor){case Float32Array:return a;case Uint16Array:return Math.round(a*65535);case Uint8Array:return Math.round(a*255);case Int16Array:return Math.round(a*32767);case Int8Array:return Math.round(a*127);default:throw new Error("Invalid component type.")}}var nn=Object.freeze({__proto__:null,DEG2RAD:Es,RAD2DEG:Eo,generateUUID:En,clamp:Vt,euclideanModulo:Lu,mapLinear:Dg,inverseLerp:Fg,lerp:go,damp:Ng,pingpong:kg,smoothstep:Og,smootherstep:Bg,randInt:zg,randFloat:Ug,randFloatSpread:Gg,seededRandom:Vg,degToRad:Hg,radToDeg:Wg,isPowerOfTwo:nu,ceilPowerOfTwo:cp,floorPowerOfTwo:rl,setQuaternionFromProperEuler:qg,normalize:jg,denormalize:Xg});class fe{constructor(e=0,t=0){fe.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,r=this.y-e.y;return this.x=s*n-r*i+e.x,this.y=s*i+r*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class dn{constructor(){dn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,n,i,s,r,o,l,c){const h=this.elements;return h[0]=e,h[1]=i,h[2]=o,h[3]=t,h[4]=s,h[5]=l,h[6]=n,h[7]=r,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,r=n[0],o=n[3],l=n[6],c=n[1],h=n[4],u=n[7],f=n[2],d=n[5],p=n[8],m=i[0],g=i[3],y=i[6],x=i[1],b=i[4],v=i[7],M=i[2],T=i[5],C=i[8];return s[0]=r*m+o*x+l*M,s[3]=r*g+o*b+l*T,s[6]=r*y+o*v+l*C,s[1]=c*m+h*x+u*M,s[4]=c*g+h*b+u*T,s[7]=c*y+h*v+u*C,s[2]=f*m+d*x+p*M,s[5]=f*g+d*b+p*T,s[8]=f*y+d*v+p*C,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*r*h-t*o*c-n*s*h+n*o*l+i*s*c-i*r*l}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=h*r-o*c,f=o*l-h*s,d=c*s-r*l,p=t*u+n*f+i*d;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return e[0]=u*m,e[1]=(i*c-h*n)*m,e[2]=(o*n-i*r)*m,e[3]=f*m,e[4]=(h*t-i*l)*m,e[5]=(i*s-o*t)*m,e[6]=d*m,e[7]=(n*l-c*t)*m,e[8]=(r*t-n*s)*m,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,r,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*r+c*o)+r+e,-i*c,i*l,-i*(-c*r+l*o)+o+t,0,0,1),this}scale(e,t){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}rotate(e){const t=Math.cos(e),n=Math.sin(e),i=this.elements,s=i[0],r=i[3],o=i[6],l=i[1],c=i[4],h=i[7];return i[0]=t*s+n*l,i[3]=t*r+n*c,i[6]=t*o+n*h,i[1]=-n*s+t*l,i[4]=-n*r+t*c,i[7]=-n*o+t*h,this}translate(e,t){const n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}function up(a){for(let e=a.length-1;e>=0;--e)if(a[e]>65535)return!0;return!1}const Yg={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function gr(a,e){return new Yg[a](e)}function Co(a){return document.createElementNS("http://www.w3.org/1999/xhtml",a)}function Cs(a){return a<.04045?a*.0773993808:Math.pow(a*.9478672986+.0521327014,2.4)}function Ja(a){return a<.0031308?a*12.92:1.055*Math.pow(a,.41666)-.055}const Ul={[Jn]:{[Wi]:Cs},[Wi]:{[Jn]:Ja}},In={legacyMode:!0,get workingColorSpace(){return Wi},set workingColorSpace(a){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(a,e,t){if(this.legacyMode||e===t||!e||!t)return a;if(Ul[e]&&Ul[e][t]!==void 0){const n=Ul[e][t];return a.r=n(a.r),a.g=n(a.g),a.b=n(a.b),a}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(a,e){return this.convert(a,this.workingColorSpace,e)},toWorkingColorSpace:function(a,e){return this.convert(a,e,this.workingColorSpace)}},hp={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Jt={r:0,g:0,b:0},Hn={h:0,s:0,l:0},ia={h:0,s:0,l:0};function Gl(a,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?a+(e-a)*6*t:t<1/2?e:t<2/3?a+(e-a)*6*(2/3-t):a}function sa(a,e){return e.r=a.r,e.g=a.g,e.b=a.b,e}class we{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,t===void 0&&n===void 0?this.set(e):this.setRGB(e,t,n)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Jn){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,In.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=Wi){return this.r=e,this.g=t,this.b=n,In.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=Wi){if(e=Lu(e,1),t=Vt(t,0,1),n=Vt(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,r=2*n-s;this.r=Gl(r,s,e+1/3),this.g=Gl(r,s,e),this.b=Gl(r,s,e-1/3)}return In.toWorkingColorSpace(this,i),this}setStyle(e,t=Jn){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let s;const r=i[1],o=i[2];switch(r){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,In.toWorkingColorSpace(this,t),n(s[4]),this;if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,In.toWorkingColorSpace(this,t),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){const l=parseFloat(s[1])/360,c=parseInt(s[2],10)/100,h=parseInt(s[3],10)/100;return n(s[4]),this.setHSL(l,c,h,t)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=i[1],r=s.length;if(r===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,In.toWorkingColorSpace(this,t),this;if(r===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,In.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=Jn){const n=hp[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Cs(e.r),this.g=Cs(e.g),this.b=Cs(e.b),this}copyLinearToSRGB(e){return this.r=Ja(e.r),this.g=Ja(e.g),this.b=Ja(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Jn){return In.fromWorkingColorSpace(sa(this,Jt),e),Vt(Jt.r*255,0,255)<<16^Vt(Jt.g*255,0,255)<<8^Vt(Jt.b*255,0,255)<<0}getHexString(e=Jn){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Wi){In.fromWorkingColorSpace(sa(this,Jt),t);const n=Jt.r,i=Jt.g,s=Jt.b,r=Math.max(n,i,s),o=Math.min(n,i,s);let l,c;const h=(o+r)/2;if(o===r)l=0,c=0;else{const u=r-o;switch(c=h<=.5?u/(r+o):u/(2-r-o),r){case n:l=(i-s)/u+(i<s?6:0);break;case i:l=(s-n)/u+2;break;case s:l=(n-i)/u+4;break}l/=6}return e.h=l,e.s=c,e.l=h,e}getRGB(e,t=Wi){return In.fromWorkingColorSpace(sa(this,Jt),t),e.r=Jt.r,e.g=Jt.g,e.b=Jt.b,e}getStyle(e=Jn){return In.fromWorkingColorSpace(sa(this,Jt),e),e!==Jn?`color(${e} ${Jt.r} ${Jt.g} ${Jt.b})`:`rgb(${Jt.r*255|0},${Jt.g*255|0},${Jt.b*255|0})`}offsetHSL(e,t,n){return this.getHSL(Hn),Hn.h+=e,Hn.s+=t,Hn.l+=n,this.setHSL(Hn.h,Hn.s,Hn.l),this}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(Hn),e.getHSL(ia);const n=go(Hn.h,ia.h,t),i=go(Hn.s,ia.s,t),s=go(Hn.l,ia.l,t);return this.setHSL(n,i,s),this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),e.normalized===!0&&(this.r/=255,this.g/=255,this.b/=255),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}we.NAMES=hp;let Ys;class Ru{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Ys===void 0&&(Ys=Co("canvas")),Ys.width=e.width,Ys.height=e.height;const n=Ys.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Ys}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){const t=Co("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),s=i.data;for(let r=0;r<s.length;r++)s[r]=Cs(s[r]/255)*255;return n.putImageData(i,0,0),t}else if(e.data){const t=e.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Cs(t[n]/255)*255):t[n]=Cs(t[n]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}class Ms{constructor(e=null){this.isSource=!0,this.uuid=En(),this.data=e,this.version=0}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const n={uuid:this.uuid,url:""},i=this.data;if(i!==null){let s;if(Array.isArray(i)){s=[];for(let r=0,o=i.length;r<o;r++)i[r].isDataTexture?s.push(Vl(i[r].image)):s.push(Vl(i[r]))}else s=Vl(i);n.url=s}return t||(e.images[this.uuid]=n),n}}function Vl(a){return typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&a instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&a instanceof ImageBitmap?Ru.getDataURL(a):a.data?{data:Array.from(a.data),width:a.width,height:a.height,type:a.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let Zg=0;class It extends ai{constructor(e=It.DEFAULT_IMAGE,t=It.DEFAULT_MAPPING,n=Zt,i=Zt,s=Ft,r=oi,o=An,l=Ki,c=1,h=Mi){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Zg++}),this.uuid=En(),this.name="",this.source=new Ms(e),this.mipmaps=[],this.mapping=t,this.wrapS=n,this.wrapT=i,this.magFilter=s,this.minFilter=r,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new fe(0,0),this.repeat=new fe(1,1),this.center=new fe(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new dn,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=h,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==gl)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case fn:e.x=e.x-Math.floor(e.x);break;case Zt:e.x=e.x<0?0:1;break;case wr:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case fn:e.y=e.y-Math.floor(e.y);break;case Zt:e.y=e.y<0?0:1;break;case wr:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}}It.DEFAULT_IMAGE=null;It.DEFAULT_MAPPING=gl;class dt{constructor(e=0,t=0,n=0,i=1){dt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i+r[12]*s,this.y=r[1]*t+r[5]*n+r[9]*i+r[13]*s,this.z=r[2]*t+r[6]*n+r[10]*i+r[14]*s,this.w=r[3]*t+r[7]*n+r[11]*i+r[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const l=e.elements,c=l[0],h=l[4],u=l[8],f=l[1],d=l[5],p=l[9],m=l[2],g=l[6],y=l[10];if(Math.abs(h-f)<.01&&Math.abs(u-m)<.01&&Math.abs(p-g)<.01){if(Math.abs(h+f)<.1&&Math.abs(u+m)<.1&&Math.abs(p+g)<.1&&Math.abs(c+d+y-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const b=(c+1)/2,v=(d+1)/2,M=(y+1)/2,T=(h+f)/4,C=(u+m)/4,_=(p+g)/4;return b>v&&b>M?b<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(b),i=T/n,s=C/n):v>M?v<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(v),n=T/i,s=_/i):M<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(M),n=C/s,i=_/s),this.set(n,i,s,t),this}let x=Math.sqrt((g-p)*(g-p)+(u-m)*(u-m)+(f-h)*(f-h));return Math.abs(x)<.001&&(x=1),this.x=(g-p)/x,this.y=(u-m)/x,this.z=(f-h)/x,this.w=Math.acos((c+d+y-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class zn extends ai{constructor(e,t,n={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new dt(0,0,e,t),this.scissorTest=!1,this.viewport=new dt(0,0,e,t);const i={width:e,height:t,depth:1};this.texture=new It(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Ft,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(e,t,n=1){(this.width!==e||this.height!==t||this.depth!==n)&&(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new Ms(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Uo extends It{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=Gt,this.minFilter=Gt,this.wrapR=Zt,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Kg extends zn{constructor(e,t,n){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new Uo(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class vl extends It{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=Gt,this.minFilter=Gt,this.wrapR=Zt,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Jg extends zn{constructor(e,t,n){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new vl(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class $g extends zn{constructor(e,t,n,i={}){super(e,t,i),this.isWebGLMultipleRenderTargets=!0;const s=this.texture;this.texture=[];for(let r=0;r<n;r++)this.texture[r]=s.clone(),this.texture[r].isRenderTargetTexture=!0}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,s=this.texture.length;i<s;i++)this.texture[i].image.width=e,this.texture[i].image.height=t,this.texture[i].image.depth=n;this.dispose()}return this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t),this}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.set(0,0,this.width,this.height),this.scissor.set(0,0,this.width,this.height),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,n=e.texture.length;t<n;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}}class Bt{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,r,o){let l=n[i+0],c=n[i+1],h=n[i+2],u=n[i+3];const f=s[r+0],d=s[r+1],p=s[r+2],m=s[r+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u;return}if(o===1){e[t+0]=f,e[t+1]=d,e[t+2]=p,e[t+3]=m;return}if(u!==m||l!==f||c!==d||h!==p){let g=1-o;const y=l*f+c*d+h*p+u*m,x=y>=0?1:-1,b=1-y*y;if(b>Number.EPSILON){const M=Math.sqrt(b),T=Math.atan2(M,y*x);g=Math.sin(g*T)/M,o=Math.sin(o*T)/M}const v=o*x;if(l=l*g+f*v,c=c*g+d*v,h=h*g+p*v,u=u*g+m*v,g===1-o){const M=1/Math.sqrt(l*l+c*c+h*h+u*u);l*=M,c*=M,h*=M,u*=M}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,i,s,r){const o=n[i],l=n[i+1],c=n[i+2],h=n[i+3],u=s[r],f=s[r+1],d=s[r+2],p=s[r+3];return e[t]=o*p+h*u+l*d-c*f,e[t+1]=l*p+h*f+c*u-o*d,e[t+2]=c*p+h*d+o*f-l*u,e[t+3]=h*p-o*u-l*f-c*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=e._x,i=e._y,s=e._z,r=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(i/2),u=o(s/2),f=l(n/2),d=l(i/2),p=l(s/2);switch(r){case"XYZ":this._x=f*h*u+c*d*p,this._y=c*d*u-f*h*p,this._z=c*h*p+f*d*u,this._w=c*h*u-f*d*p;break;case"YXZ":this._x=f*h*u+c*d*p,this._y=c*d*u-f*h*p,this._z=c*h*p-f*d*u,this._w=c*h*u+f*d*p;break;case"ZXY":this._x=f*h*u-c*d*p,this._y=c*d*u+f*h*p,this._z=c*h*p+f*d*u,this._w=c*h*u-f*d*p;break;case"ZYX":this._x=f*h*u-c*d*p,this._y=c*d*u+f*h*p,this._z=c*h*p-f*d*u,this._w=c*h*u+f*d*p;break;case"YZX":this._x=f*h*u+c*d*p,this._y=c*d*u+f*h*p,this._z=c*h*p-f*d*u,this._w=c*h*u-f*d*p;break;case"XZY":this._x=f*h*u-c*d*p,this._y=c*d*u-f*h*p,this._z=c*h*p+f*d*u,this._w=c*h*u+f*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+r)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],r=t[1],o=t[5],l=t[9],c=t[2],h=t[6],u=t[10],f=n+o+u;if(f>0){const d=.5/Math.sqrt(f+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-c)*d,this._z=(r-i)*d}else if(n>o&&n>u){const d=2*Math.sqrt(1+n-o-u);this._w=(h-l)/d,this._x=.25*d,this._y=(i+r)/d,this._z=(s+c)/d}else if(o>u){const d=2*Math.sqrt(1+o-n-u);this._w=(s-c)/d,this._x=(i+r)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+u-n-o);this._w=(r-i)/d,this._x=(s+c)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Vt(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,r=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+r*o+i*c-s*l,this._y=i*h+r*l+s*o-n*c,this._z=s*h+r*c+n*l-i*o,this._w=r*h-n*o-i*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,r=this._w;let o=r*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=r,this._x=n,this._y=i,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const d=1-t;return this._w=d*r+t*this._w,this._x=d*n+t*this._x,this._y=d*i+t*this._y,this._z=d*s+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),u=Math.sin((1-t)*h)/c,f=Math.sin(t*h)/c;return this._w=r*u+this._w*f,this._x=n*u+this._x*f,this._y=i*u+this._y*f,this._z=s*u+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(t*Math.cos(i),n*Math.sin(s),n*Math.cos(s),t*Math.sin(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class I{constructor(e=0,t=0,n=0){I.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(bh.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(bh.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,r=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*r,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*r,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*r,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,r=e.y,o=e.z,l=e.w,c=l*t+r*i-o*n,h=l*n+o*t-s*i,u=l*i+s*n-r*t,f=-s*t-r*n-o*i;return this.x=c*l+f*-s+h*-o-u*-r,this.y=h*l+f*-r+u*-s-c*-o,this.z=u*l+f*-o+c*-r-h*-s,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,r=t.x,o=t.y,l=t.z;return this.x=i*l-s*o,this.y=s*r-n*l,this.z=n*o-i*r,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Hl.copy(this).projectOnVector(e),this.sub(Hl)}reflect(e){return this.sub(Hl.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Vt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,n=Math.sqrt(1-e**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Hl=new I,bh=new Bt;class Li{constructor(e=new I(1/0,1/0,1/0),t=new I(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,n=1/0,i=1/0,s=-1/0,r=-1/0,o=-1/0;for(let l=0,c=e.length;l<c;l+=3){const h=e[l],u=e[l+1],f=e[l+2];h<t&&(t=h),u<n&&(n=u),f<i&&(i=f),h>s&&(s=h),u>r&&(r=u),f>o&&(o=f)}return this.min.set(t,n,i),this.max.set(s,r,o),this}setFromBufferAttribute(e){let t=1/0,n=1/0,i=1/0,s=-1/0,r=-1/0,o=-1/0;for(let l=0,c=e.count;l<c;l++){const h=e.getX(l),u=e.getY(l),f=e.getZ(l);h<t&&(t=h),u<n&&(n=u),f<i&&(i=f),h>s&&(s=h),u>r&&(r=u),f>o&&(o=f)}return this.min.set(t,n,i),this.max.set(s,r,o),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=as.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(n!==void 0)if(t&&n.attributes!=null&&n.attributes.position!==void 0){const s=n.attributes.position;for(let r=0,o=s.count;r<o;r++)as.fromBufferAttribute(s,r).applyMatrix4(e.matrixWorld),this.expandByPoint(as)}else n.boundingBox===null&&n.computeBoundingBox(),Wl.copy(n.boundingBox),Wl.applyMatrix4(e.matrixWorld),this.union(Wl);const i=e.children;for(let s=0,r=i.length;s<r;s++)this.expandByObject(i[s],t);return this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,as),as.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(to),ra.subVectors(this.max,to),Zs.subVectors(e.a,to),Ks.subVectors(e.b,to),Js.subVectors(e.c,to),Pi.subVectors(Ks,Zs),Di.subVectors(Js,Ks),ls.subVectors(Zs,Js);let t=[0,-Pi.z,Pi.y,0,-Di.z,Di.y,0,-ls.z,ls.y,Pi.z,0,-Pi.x,Di.z,0,-Di.x,ls.z,0,-ls.x,-Pi.y,Pi.x,0,-Di.y,Di.x,0,-ls.y,ls.x,0];return!ql(t,Zs,Ks,Js,ra)||(t=[1,0,0,0,1,0,0,0,1],!ql(t,Zs,Ks,Js,ra))?!1:(oa.crossVectors(Pi,Di),t=[oa.x,oa.y,oa.z],ql(t,Zs,Ks,Js,ra))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return as.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(as).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(ui[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ui[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ui[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ui[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ui[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ui[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ui[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ui[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ui),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const ui=[new I,new I,new I,new I,new I,new I,new I,new I],as=new I,Wl=new Li,Zs=new I,Ks=new I,Js=new I,Pi=new I,Di=new I,ls=new I,to=new I,ra=new I,oa=new I,cs=new I;function ql(a,e,t,n,i){for(let s=0,r=a.length-3;s<=r;s+=3){cs.fromArray(a,s);const o=i.x*Math.abs(cs.x)+i.y*Math.abs(cs.y)+i.z*Math.abs(cs.z),l=e.dot(cs),c=t.dot(cs),h=n.dot(cs);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const Qg=new Li,wh=new I,aa=new I,Xl=new I;class is{constructor(e=new I,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Qg.setFromPoints(e).getCenter(n);let i=0;for(let s=0,r=e.length;s<r;s++)i=Math.max(i,n.distanceToSquared(e[s]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){Xl.subVectors(e,this.center);const t=Xl.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.add(Xl.multiplyScalar(i/n)),this.radius+=i}return this}union(e){return this.center.equals(e.center)===!0?aa.set(0,0,1).multiplyScalar(e.radius):aa.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(wh.copy(e.center).add(aa)),this.expandByPoint(wh.copy(e.center).sub(aa)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const hi=new I,jl=new I,la=new I,Fi=new I,Yl=new I,ca=new I,Zl=new I;class Go{constructor(e=new I,t=new I(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,hi)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=hi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(hi.copy(this.direction).multiplyScalar(t).add(this.origin),hi.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){jl.copy(e).add(t).multiplyScalar(.5),la.copy(t).sub(e).normalize(),Fi.copy(this.origin).sub(jl);const s=e.distanceTo(t)*.5,r=-this.direction.dot(la),o=Fi.dot(this.direction),l=-Fi.dot(la),c=Fi.lengthSq(),h=Math.abs(1-r*r);let u,f,d,p;if(h>0)if(u=r*l-o,f=r*o-l,p=s*h,u>=0)if(f>=-p)if(f<=p){const m=1/h;u*=m,f*=m,d=u*(u+r*f+2*o)+f*(r*u+f+2*l)+c}else f=s,u=Math.max(0,-(r*f+o)),d=-u*u+f*(f+2*l)+c;else f=-s,u=Math.max(0,-(r*f+o)),d=-u*u+f*(f+2*l)+c;else f<=-p?(u=Math.max(0,-(-r*s+o)),f=u>0?-s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c):f<=p?(u=0,f=Math.min(Math.max(-s,-l),s),d=f*(f+2*l)+c):(u=Math.max(0,-(r*s+o)),f=u>0?s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c);else f=r>0?-s:s,u=Math.max(0,-(r*f+o)),d=-u*u+f*(f+2*l)+c;return n&&n.copy(this.direction).multiplyScalar(u).add(this.origin),i&&i.copy(la).multiplyScalar(f).add(jl),d}intersectSphere(e,t){hi.subVectors(e.center,this.origin);const n=hi.dot(this.direction),i=hi.dot(hi)-n*n,s=e.radius*e.radius;if(i>s)return null;const r=Math.sqrt(s-i),o=n-r,l=n+r;return o<0&&l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,s,r,o,l;const c=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,f=this.origin;return c>=0?(n=(e.min.x-f.x)*c,i=(e.max.x-f.x)*c):(n=(e.max.x-f.x)*c,i=(e.min.x-f.x)*c),h>=0?(s=(e.min.y-f.y)*h,r=(e.max.y-f.y)*h):(s=(e.max.y-f.y)*h,r=(e.min.y-f.y)*h),n>r||s>i||((s>n||n!==n)&&(n=s),(r<i||i!==i)&&(i=r),u>=0?(o=(e.min.z-f.z)*u,l=(e.max.z-f.z)*u):(o=(e.max.z-f.z)*u,l=(e.min.z-f.z)*u),n>l||o>i)||((o>n||n!==n)&&(n=o),(l<i||i!==i)&&(i=l),i<0)?null:this.at(n>=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,hi)!==null}intersectTriangle(e,t,n,i,s){Yl.subVectors(t,e),ca.subVectors(n,e),Zl.crossVectors(Yl,ca);let r=this.direction.dot(Zl),o;if(r>0){if(i)return null;o=1}else if(r<0)o=-1,r=-r;else return null;Fi.subVectors(this.origin,e);const l=o*this.direction.dot(ca.crossVectors(Fi,ca));if(l<0)return null;const c=o*this.direction.dot(Yl.cross(Fi));if(c<0||l+c>r)return null;const h=-o*Fi.dot(Zl);return h<0?null:this.at(h/r,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Ne{constructor(){Ne.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,n,i,s,r,o,l,c,h,u,f,d,p,m,g){const y=this.elements;return y[0]=e,y[4]=t,y[8]=n,y[12]=i,y[1]=s,y[5]=r,y[9]=o,y[13]=l,y[2]=c,y[6]=h,y[10]=u,y[14]=f,y[3]=d,y[7]=p,y[11]=m,y[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Ne().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/$s.setFromMatrixColumn(e,0).length(),s=1/$s.setFromMatrixColumn(e,1).length(),r=1/$s.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*r,t[9]=n[9]*r,t[10]=n[10]*r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,r=Math.cos(n),o=Math.sin(n),l=Math.cos(i),c=Math.sin(i),h=Math.cos(s),u=Math.sin(s);if(e.order==="XYZ"){const f=r*h,d=r*u,p=o*h,m=o*u;t[0]=l*h,t[4]=-l*u,t[8]=c,t[1]=d+p*c,t[5]=f-m*c,t[9]=-o*l,t[2]=m-f*c,t[6]=p+d*c,t[10]=r*l}else if(e.order==="YXZ"){const f=l*h,d=l*u,p=c*h,m=c*u;t[0]=f+m*o,t[4]=p*o-d,t[8]=r*c,t[1]=r*u,t[5]=r*h,t[9]=-o,t[2]=d*o-p,t[6]=m+f*o,t[10]=r*l}else if(e.order==="ZXY"){const f=l*h,d=l*u,p=c*h,m=c*u;t[0]=f-m*o,t[4]=-r*u,t[8]=p+d*o,t[1]=d+p*o,t[5]=r*h,t[9]=m-f*o,t[2]=-r*c,t[6]=o,t[10]=r*l}else if(e.order==="ZYX"){const f=r*h,d=r*u,p=o*h,m=o*u;t[0]=l*h,t[4]=p*c-d,t[8]=f*c+m,t[1]=l*u,t[5]=m*c+f,t[9]=d*c-p,t[2]=-c,t[6]=o*l,t[10]=r*l}else if(e.order==="YZX"){const f=r*l,d=r*c,p=o*l,m=o*c;t[0]=l*h,t[4]=m-f*u,t[8]=p*u+d,t[1]=u,t[5]=r*h,t[9]=-o*h,t[2]=-c*h,t[6]=d*u+p,t[10]=f-m*u}else if(e.order==="XZY"){const f=r*l,d=r*c,p=o*l,m=o*c;t[0]=l*h,t[4]=-u,t[8]=c*h,t[1]=f*u+m,t[5]=r*h,t[9]=d*u-p,t[2]=p*u-d,t[6]=o*h,t[10]=m*u+f}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(e0,e,t0)}lookAt(e,t,n){const i=this.elements;return Sn.subVectors(e,t),Sn.lengthSq()===0&&(Sn.z=1),Sn.normalize(),Ni.crossVectors(n,Sn),Ni.lengthSq()===0&&(Math.abs(n.z)===1?Sn.x+=1e-4:Sn.z+=1e-4,Sn.normalize(),Ni.crossVectors(n,Sn)),Ni.normalize(),ua.crossVectors(Sn,Ni),i[0]=Ni.x,i[4]=ua.x,i[8]=Sn.x,i[1]=Ni.y,i[5]=ua.y,i[9]=Sn.y,i[2]=Ni.z,i[6]=ua.z,i[10]=Sn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,r=n[0],o=n[4],l=n[8],c=n[12],h=n[1],u=n[5],f=n[9],d=n[13],p=n[2],m=n[6],g=n[10],y=n[14],x=n[3],b=n[7],v=n[11],M=n[15],T=i[0],C=i[4],_=i[8],E=i[12],F=i[1],U=i[5],q=i[9],K=i[13],G=i[2],X=i[6],O=i[10],j=i[14],Y=i[3],W=i[7],Z=i[11],ee=i[15];return s[0]=r*T+o*F+l*G+c*Y,s[4]=r*C+o*U+l*X+c*W,s[8]=r*_+o*q+l*O+c*Z,s[12]=r*E+o*K+l*j+c*ee,s[1]=h*T+u*F+f*G+d*Y,s[5]=h*C+u*U+f*X+d*W,s[9]=h*_+u*q+f*O+d*Z,s[13]=h*E+u*K+f*j+d*ee,s[2]=p*T+m*F+g*G+y*Y,s[6]=p*C+m*U+g*X+y*W,s[10]=p*_+m*q+g*O+y*Z,s[14]=p*E+m*K+g*j+y*ee,s[3]=x*T+b*F+v*G+M*Y,s[7]=x*C+b*U+v*X+M*W,s[11]=x*_+b*q+v*O+M*Z,s[15]=x*E+b*K+v*j+M*ee,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],r=e[1],o=e[5],l=e[9],c=e[13],h=e[2],u=e[6],f=e[10],d=e[14],p=e[3],m=e[7],g=e[11],y=e[15];return p*(+s*l*u-i*c*u-s*o*f+n*c*f+i*o*d-n*l*d)+m*(+t*l*d-t*c*f+s*r*f-i*r*d+i*c*h-s*l*h)+g*(+t*c*u-t*o*d-s*r*u+n*r*d+s*o*h-n*c*h)+y*(-i*o*h-t*l*u+t*o*f+i*r*u-n*r*f+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=e[9],f=e[10],d=e[11],p=e[12],m=e[13],g=e[14],y=e[15],x=u*g*c-m*f*c+m*l*d-o*g*d-u*l*y+o*f*y,b=p*f*c-h*g*c-p*l*d+r*g*d+h*l*y-r*f*y,v=h*m*c-p*u*c+p*o*d-r*m*d-h*o*y+r*u*y,M=p*u*l-h*m*l-p*o*f+r*m*f+h*o*g-r*u*g,T=t*x+n*b+i*v+s*M;if(T===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const C=1/T;return e[0]=x*C,e[1]=(m*f*s-u*g*s-m*i*d+n*g*d+u*i*y-n*f*y)*C,e[2]=(o*g*s-m*l*s+m*i*c-n*g*c-o*i*y+n*l*y)*C,e[3]=(u*l*s-o*f*s-u*i*c+n*f*c+o*i*d-n*l*d)*C,e[4]=b*C,e[5]=(h*g*s-p*f*s+p*i*d-t*g*d-h*i*y+t*f*y)*C,e[6]=(p*l*s-r*g*s-p*i*c+t*g*c+r*i*y-t*l*y)*C,e[7]=(r*f*s-h*l*s+h*i*c-t*f*c-r*i*d+t*l*d)*C,e[8]=v*C,e[9]=(p*u*s-h*m*s-p*n*d+t*m*d+h*n*y-t*u*y)*C,e[10]=(r*m*s-p*o*s+p*n*c-t*m*c-r*n*y+t*o*y)*C,e[11]=(h*o*s-r*u*s-h*n*c+t*u*c+r*n*d-t*o*d)*C,e[12]=M*C,e[13]=(h*m*i-p*u*i+p*n*f-t*m*f-h*n*g+t*u*g)*C,e[14]=(p*o*i-r*m*i-p*n*l+t*m*l+r*n*g-t*o*g)*C,e[15]=(r*u*i-h*o*i+h*n*l-t*u*l-r*n*f+t*o*f)*C,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,r=e.x,o=e.y,l=e.z,c=s*r,h=s*o;return this.set(c*r+n,c*o-i*l,c*l+i*o,0,c*o+i*l,h*o+n,h*l-i*r,0,c*l-i*o,h*l+i*r,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,r){return this.set(1,n,s,0,e,1,r,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,r=t._y,o=t._z,l=t._w,c=s+s,h=r+r,u=o+o,f=s*c,d=s*h,p=s*u,m=r*h,g=r*u,y=o*u,x=l*c,b=l*h,v=l*u,M=n.x,T=n.y,C=n.z;return i[0]=(1-(m+y))*M,i[1]=(d+v)*M,i[2]=(p-b)*M,i[3]=0,i[4]=(d-v)*T,i[5]=(1-(f+y))*T,i[6]=(g+x)*T,i[7]=0,i[8]=(p+b)*C,i[9]=(g-x)*C,i[10]=(1-(f+m))*C,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=$s.set(i[0],i[1],i[2]).length();const r=$s.set(i[4],i[5],i[6]).length(),o=$s.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],Wn.copy(this);const c=1/s,h=1/r,u=1/o;return Wn.elements[0]*=c,Wn.elements[1]*=c,Wn.elements[2]*=c,Wn.elements[4]*=h,Wn.elements[5]*=h,Wn.elements[6]*=h,Wn.elements[8]*=u,Wn.elements[9]*=u,Wn.elements[10]*=u,t.setFromRotationMatrix(Wn),n.x=s,n.y=r,n.z=o,this}makePerspective(e,t,n,i,s,r){const o=this.elements,l=2*s/(t-e),c=2*s/(n-i),h=(t+e)/(t-e),u=(n+i)/(n-i),f=-(r+s)/(r-s),d=-2*r*s/(r-s);return o[0]=l,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=c,o[9]=u,o[13]=0,o[2]=0,o[6]=0,o[10]=f,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(e,t,n,i,s,r){const o=this.elements,l=1/(t-e),c=1/(n-i),h=1/(r-s),u=(t+e)*l,f=(n+i)*c,d=(r+s)*h;return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-u,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-f,o[2]=0,o[6]=0,o[10]=-2*h,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const $s=new I,Wn=new Ne,e0=new I(0,0,0),t0=new I(1,1,1),Ni=new I,ua=new I,Sn=new I,Mh=new Ne,Sh=new Bt;class Nn{constructor(e=0,t=0,n=0,i=Nn.DefaultOrder){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],r=i[4],o=i[8],l=i[1],c=i[5],h=i[9],u=i[2],f=i[6],d=i[10];switch(t){case"XYZ":this._y=Math.asin(Vt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-r,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Vt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(Vt(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-r,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Vt(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(f,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-r,c));break;case"YZX":this._z=Math.asin(Vt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-Vt(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Mh.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Mh,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Sh.setFromEuler(this),this.setFromQuaternion(Sh,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}toVector3(){console.error("THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead")}}Nn.DefaultOrder="XYZ";Nn.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class _l{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let n0=0;const Th=new I,Qs=new Bt,fi=new Ne,ha=new I,no=new I,i0=new I,s0=new Bt,Ah=new I(1,0,0),Eh=new I(0,1,0),Ch=new I(0,0,1),r0={type:"added"},Lh={type:"removed"};class pt extends ai{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:n0++}),this.uuid=En(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=pt.DefaultUp.clone();const e=new I,t=new Nn,n=new Bt,i=new I(1,1,1);function s(){n.setFromEuler(t,!1)}function r(){t.setFromQuaternion(n,void 0,!1)}t._onChange(s),n._onChange(r),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new Ne},normalMatrix:{value:new dn}}),this.matrix=new Ne,this.matrixWorld=new Ne,this.matrixAutoUpdate=pt.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new _l,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return Qs.setFromAxisAngle(e,t),this.quaternion.multiply(Qs),this}rotateOnWorldAxis(e,t){return Qs.setFromAxisAngle(e,t),this.quaternion.premultiply(Qs),this}rotateX(e){return this.rotateOnAxis(Ah,e)}rotateY(e){return this.rotateOnAxis(Eh,e)}rotateZ(e){return this.rotateOnAxis(Ch,e)}translateOnAxis(e,t){return Th.copy(e).applyQuaternion(this.quaternion),this.position.add(Th.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(Ah,e)}translateY(e){return this.translateOnAxis(Eh,e)}translateZ(e){return this.translateOnAxis(Ch,e)}localToWorld(e){return e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return e.applyMatrix4(fi.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?ha.copy(e):ha.set(e,t,n);const i=this.parent;this.updateWorldMatrix(!0,!1),no.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?fi.lookAt(no,ha,this.up):fi.lookAt(ha,no,this.up),this.quaternion.setFromRotationMatrix(fi),i&&(fi.extractRotation(i.matrixWorld),Qs.setFromRotationMatrix(fi),this.quaternion.premultiply(Qs.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.parent!==null&&e.parent.remove(e),e.parent=this,this.children.push(e),e.dispatchEvent(r0)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(Lh)),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){for(let e=0;e<this.children.length;e++){const t=this.children[e];t.parent=null,t.dispatchEvent(Lh)}return this.children.length=0,this}attach(e){return this.updateWorldMatrix(!0,!1),fi.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),fi.multiply(e.parent.matrixWorld)),e.applyMatrix4(fi),this.add(e),e.updateWorldMatrix(!1,!0),this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n<i;n++){const r=this.children[n].getObjectByProperty(e,t);if(r!==void 0)return r}}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(no,e,i0),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(no,s0,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),t===!0){const i=this.children;for(let s=0,r=i.length;s<r;s++)i[s].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});const i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c<h;c++){const u=l[c];s(e.shapes,u)}else s(e.shapes,l)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(s(e.materials,this.material[l]));i.material=o}else i.material=s(e.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];i.animations.push(s(e.animations,l))}}if(t){const o=r(e.geometries),l=r(e.materials),c=r(e.textures),h=r(e.images),u=r(e.shapes),f=r(e.skeletons),d=r(e.animations),p=r(e.nodes);o.length>0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),u.length>0&&(n.shapes=u),f.length>0&&(n.skeletons=f),d.length>0&&(n.animations=d),p.length>0&&(n.nodes=p)}return n.object=i,n;function r(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n<e.children.length;n++){const i=e.children[n];this.add(i.clone())}return this}}pt.DefaultUp=new I(0,1,0);pt.DefaultMatrixAutoUpdate=!0;const qn=new I,di=new I,Kl=new I,pi=new I,er=new I,tr=new I,Rh=new I,Jl=new I,$l=new I,Ql=new I;class Fn{constructor(e=new I,t=new I,n=new I){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),qn.subVectors(e,t),i.cross(qn);const s=i.lengthSq();return s>0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(e,t,n,i,s){qn.subVectors(i,t),di.subVectors(n,t),Kl.subVectors(e,t);const r=qn.dot(qn),o=qn.dot(di),l=qn.dot(Kl),c=di.dot(di),h=di.dot(Kl),u=r*c-o*o;if(u===0)return s.set(-2,-1,-1);const f=1/u,d=(c*l-o*h)*f,p=(r*h-o*l)*f;return s.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,pi),pi.x>=0&&pi.y>=0&&pi.x+pi.y<=1}static getUV(e,t,n,i,s,r,o,l){return this.getBarycoord(e,t,n,i,pi),l.set(0,0),l.addScaledVector(s,pi.x),l.addScaledVector(r,pi.y),l.addScaledVector(o,pi.z),l}static isFrontFacing(e,t,n,i){return qn.subVectors(n,t),di.subVectors(e,t),qn.cross(di).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return qn.subVectors(this.c,this.b),di.subVectors(this.a,this.b),qn.cross(di).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Fn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Fn.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,i,s){return Fn.getUV(e,this.a,this.b,this.c,t,n,i,s)}containsPoint(e){return Fn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Fn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,s=this.c;let r,o;er.subVectors(i,n),tr.subVectors(s,n),Jl.subVectors(e,n);const l=er.dot(Jl),c=tr.dot(Jl);if(l<=0&&c<=0)return t.copy(n);$l.subVectors(e,i);const h=er.dot($l),u=tr.dot($l);if(h>=0&&u<=h)return t.copy(i);const f=l*u-h*c;if(f<=0&&l>=0&&h<=0)return r=l/(l-h),t.copy(n).addScaledVector(er,r);Ql.subVectors(e,s);const d=er.dot(Ql),p=tr.dot(Ql);if(p>=0&&d<=p)return t.copy(s);const m=d*c-l*p;if(m<=0&&c>=0&&p<=0)return o=c/(c-p),t.copy(n).addScaledVector(tr,o);const g=h*p-d*u;if(g<=0&&u-h>=0&&d-p>=0)return Rh.subVectors(s,i),o=(u-h)/(u-h+(d-p)),t.copy(i).addScaledVector(Rh,o);const y=1/(g+m+f);return r=m*y,o=f*y,t.copy(n).addScaledVector(er,r).addScaledVector(tr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let o0=0;class Wt extends ai{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:o0++}),this.uuid=En(),this.name="",this.type="Material",this.blending=Ts,this.side=bi,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Mu,this.blendDst=Su,this.blendEquation=vs,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=il,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=lp,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Ka,this.stencilZFail=Ka,this.stencilZPass=Ka,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if(t==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=n===pd;continue}const i=this[t];if(i===void 0){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Ts&&(n.blending=this.blending),this.side!==bi&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData);function i(s){const r=[];for(const o in s){const l=s[o];delete l.metadata,r.push(l)}return r}if(t){const s=i(e.textures),r=i(e.images);s.length>0&&(n.textures=s),r.length>0&&(n.images=r)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const i=t.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class ln extends Wt{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new we(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=zo,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Yt=new I,fa=new fe;class mt{constructor(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n===!0,this.usage=Ao,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,s=this.itemSize;i<s;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}copyColorsArray(e){const t=this.array;let n=0;for(let i=0,s=e.length;i<s;i++){let r=e[i];r===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",i),r=new we),t[n++]=r.r,t[n++]=r.g,t[n++]=r.b}return this}copyVector2sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length;i<s;i++){let r=e[i];r===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",i),r=new fe),t[n++]=r.x,t[n++]=r.y}return this}copyVector3sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length;i<s;i++){let r=e[i];r===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",i),r=new I),t[n++]=r.x,t[n++]=r.y,t[n++]=r.z}return this}copyVector4sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length;i<s;i++){let r=e[i];r===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",i),r=new dt),t[n++]=r.x,t[n++]=r.y,t[n++]=r.z,t[n++]=r.w}return this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)fa.fromBufferAttribute(this,t),fa.applyMatrix3(e),this.setXY(t,fa.x,fa.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAttribute(this,t),Yt.applyMatrix3(e),this.setXYZ(t,Yt.x,Yt.y,Yt.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAttribute(this,t),Yt.applyMatrix4(e),this.setXYZ(t,Yt.x,Yt.y,Yt.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAttribute(this,t),Yt.applyNormalMatrix(e),this.setXYZ(t,Yt.x,Yt.y,Yt.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAttribute(this,t),Yt.transformDirection(e),this.setXYZ(t,Yt.x,Yt.y,Yt.z);return this}set(e,t=0){return this.array.set(e,t),this}getX(e){return this.array[e*this.itemSize]}setX(e,t){return this.array[e*this.itemSize]=t,this}getY(e){return this.array[e*this.itemSize+1]}setY(e,t){return this.array[e*this.itemSize+1]=t,this}getZ(e){return this.array[e*this.itemSize+2]}setZ(e,t){return this.array[e*this.itemSize+2]=t,this}getW(e){return this.array[e*this.itemSize+3]}setW(e,t){return this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,s){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=s,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==Ao&&(e.usage=this.usage),(this.updateRange.offset!==0||this.updateRange.count!==-1)&&(e.updateRange=this.updateRange),e}}class a0 extends mt{constructor(e,t,n){super(new Int8Array(e),t,n)}}class l0 extends mt{constructor(e,t,n){super(new Uint8Array(e),t,n)}}class c0 extends mt{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}}class u0 extends mt{constructor(e,t,n){super(new Int16Array(e),t,n)}}class bl extends mt{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class h0 extends mt{constructor(e,t,n){super(new Int32Array(e),t,n)}}class Iu extends mt{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class f0 extends mt{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}}class Ce extends mt{constructor(e,t,n){super(new Float32Array(e),t,n)}}class d0 extends mt{constructor(e,t,n){super(new Float64Array(e),t,n)}}let p0=0;const Ln=new Ne,ec=new pt,nr=new I,Tn=new Li,io=new Li,en=new I;class Xe extends ai{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:p0++}),this.uuid=En(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(up(e)?Iu:bl)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const s=new dn().getNormalMatrix(e);n.applyNormalMatrix(s),n.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Ln.makeRotationFromQuaternion(e),this.applyMatrix4(Ln),this}rotateX(e){return Ln.makeRotationX(e),this.applyMatrix4(Ln),this}rotateY(e){return Ln.makeRotationY(e),this.applyMatrix4(Ln),this}rotateZ(e){return Ln.makeRotationZ(e),this.applyMatrix4(Ln),this}translate(e,t,n){return Ln.makeTranslation(e,t,n),this.applyMatrix4(Ln),this}scale(e,t,n){return Ln.makeScale(e,t,n),this.applyMatrix4(Ln),this}lookAt(e){return ec.lookAt(e),ec.updateMatrix(),this.applyMatrix4(ec.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nr).negate(),this.translate(nr.x,nr.y,nr.z),this}setFromPoints(e){const t=[];for(let n=0,i=e.length;n<i;n++){const s=e[n];t.push(s.x,s.y,s.z||0)}return this.setAttribute("position",new Ce(t,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Li);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new I(-1/0,-1/0,-1/0),new I(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,i=t.length;n<i;n++){const s=t[n];Tn.setFromBufferAttribute(s),this.morphTargetsRelative?(en.addVectors(this.boundingBox.min,Tn.min),this.boundingBox.expandByPoint(en),en.addVectors(this.boundingBox.max,Tn.max),this.boundingBox.expandByPoint(en)):(this.boundingBox.expandByPoint(Tn.min),this.boundingBox.expandByPoint(Tn.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new is);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new I,1/0);return}if(e){const n=this.boundingSphere.center;if(Tn.setFromBufferAttribute(e),t)for(let s=0,r=t.length;s<r;s++){const o=t[s];io.setFromBufferAttribute(o),this.morphTargetsRelative?(en.addVectors(Tn.min,io.min),Tn.expandByPoint(en),en.addVectors(Tn.max,io.max),Tn.expandByPoint(en)):(Tn.expandByPoint(io.min),Tn.expandByPoint(io.max))}Tn.getCenter(n);let i=0;for(let s=0,r=e.count;s<r;s++)en.fromBufferAttribute(e,s),i=Math.max(i,n.distanceToSquared(en));if(t)for(let s=0,r=t.length;s<r;s++){const o=t[s],l=this.morphTargetsRelative;for(let c=0,h=o.count;c<h;c++)en.fromBufferAttribute(o,c),l&&(nr.fromBufferAttribute(e,c),en.add(nr)),i=Math.max(i,n.distanceToSquared(en))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=e.array,i=t.position.array,s=t.normal.array,r=t.uv.array,o=i.length/3;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new mt(new Float32Array(4*o),4));const l=this.getAttribute("tangent").array,c=[],h=[];for(let F=0;F<o;F++)c[F]=new I,h[F]=new I;const u=new I,f=new I,d=new I,p=new fe,m=new fe,g=new fe,y=new I,x=new I;function b(F,U,q){u.fromArray(i,F*3),f.fromArray(i,U*3),d.fromArray(i,q*3),p.fromArray(r,F*2),m.fromArray(r,U*2),g.fromArray(r,q*2),f.sub(u),d.sub(u),m.sub(p),g.sub(p);const K=1/(m.x*g.y-g.x*m.y);!isFinite(K)||(y.copy(f).multiplyScalar(g.y).addScaledVector(d,-m.y).multiplyScalar(K),x.copy(d).multiplyScalar(m.x).addScaledVector(f,-g.x).multiplyScalar(K),c[F].add(y),c[U].add(y),c[q].add(y),h[F].add(x),h[U].add(x),h[q].add(x))}let v=this.groups;v.length===0&&(v=[{start:0,count:n.length}]);for(let F=0,U=v.length;F<U;++F){const q=v[F],K=q.start,G=q.count;for(let X=K,O=K+G;X<O;X+=3)b(n[X+0],n[X+1],n[X+2])}const M=new I,T=new I,C=new I,_=new I;function E(F){C.fromArray(s,F*3),_.copy(C);const U=c[F];M.copy(U),M.sub(C.multiplyScalar(C.dot(U))).normalize(),T.crossVectors(_,U);const K=T.dot(h[F])<0?-1:1;l[F*4]=M.x,l[F*4+1]=M.y,l[F*4+2]=M.z,l[F*4+3]=K}for(let F=0,U=v.length;F<U;++F){const q=v[F],K=q.start,G=q.count;for(let X=K,O=K+G;X<O;X+=3)E(n[X+0]),E(n[X+1]),E(n[X+2])}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new mt(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let f=0,d=n.count;f<d;f++)n.setXYZ(f,0,0,0);const i=new I,s=new I,r=new I,o=new I,l=new I,c=new I,h=new I,u=new I;if(e)for(let f=0,d=e.count;f<d;f+=3){const p=e.getX(f+0),m=e.getX(f+1),g=e.getX(f+2);i.fromBufferAttribute(t,p),s.fromBufferAttribute(t,m),r.fromBufferAttribute(t,g),h.subVectors(r,s),u.subVectors(i,s),h.cross(u),o.fromBufferAttribute(n,p),l.fromBufferAttribute(n,m),c.fromBufferAttribute(n,g),o.add(h),l.add(h),c.add(h),n.setXYZ(p,o.x,o.y,o.z),n.setXYZ(m,l.x,l.y,l.z),n.setXYZ(g,c.x,c.y,c.z)}else for(let f=0,d=t.count;f<d;f+=3)i.fromBufferAttribute(t,f+0),s.fromBufferAttribute(t,f+1),r.fromBufferAttribute(t,f+2),h.subVectors(r,s),u.subVectors(i,s),h.cross(u),n.setXYZ(f+0,h.x,h.y,h.z),n.setXYZ(f+1,h.x,h.y,h.z),n.setXYZ(f+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}merge(e,t){if(!(e&&e.isBufferGeometry)){console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",e);return}t===void 0&&(t=0,console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));const n=this.attributes;for(const i in n){if(e.attributes[i]===void 0)continue;const r=n[i].array,o=e.attributes[i],l=o.array,c=o.itemSize*t,h=Math.min(l.length,r.length-c);for(let u=0,f=c;u<h;u++,f++)r[f]=l[u]}return this}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)en.fromBufferAttribute(e,t),en.normalize(),e.setXYZ(t,en.x,en.y,en.z)}toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,u=o.normalized,f=new c.constructor(l.length*h);let d=0,p=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*h;for(let y=0;y<h;y++)f[p++]=c[d++]}return new mt(f,h,u)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new Xe,n=this.index.array,i=this.attributes;for(const o in i){const l=i[o],c=e(l,n);t.setAttribute(o,c)}const s=this.morphAttributes;for(const o in s){const l=[],c=s[o];for(let h=0,u=c.length;h<u;h++){const f=c[h],d=e(f,n);l.push(d)}t.morphAttributes[o]=l}t.morphTargetsRelative=this.morphTargetsRelative;const r=this.groups;for(let o=0,l=r.length;o<l;o++){const c=r[o];t.addGroup(c.start,c.count,c.materialIndex)}return t}toJSON(){const e={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const i={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let u=0,f=c.length;u<f;u++){const d=c[u];h.push(d.toJSON(e.data))}h.length>0&&(i[l]=h,s=!0)}s&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const r=this.groups;r.length>0&&(e.data.groups=JSON.parse(JSON.stringify(r)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone(t));const i=e.attributes;for(const c in i){const h=i[c];this.setAttribute(c,h.clone(t))}const s=e.morphAttributes;for(const c in s){const h=[],u=s[c];for(let f=0,d=u.length;f<d;f++)h.push(u[f].clone(t));this.morphAttributes[c]=h}this.morphTargetsRelative=e.morphTargetsRelative;const r=e.groups;for(let c=0,h=r.length;c<h;c++){const u=r[c];this.addGroup(u.start,u.count,u.materialIndex)}const o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=e.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,e.parameters!==void 0&&(this.parameters=Object.assign({},e.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}}const Ih=new Ne,ir=new Go,tc=new is,ki=new I,Oi=new I,Bi=new I,nc=new I,ic=new I,sc=new I,da=new I,pa=new I,ma=new I,ga=new fe,ya=new fe,xa=new fe,rc=new I,va=new I;class Rt extends pt{constructor(e=new Xe,t=new ln){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,r=i.length;s<r;s++){const o=i[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}raycast(e,t){const n=this.geometry,i=this.material,s=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),tc.copy(n.boundingSphere),tc.applyMatrix4(s),e.ray.intersectsSphere(tc)===!1)||(Ih.copy(s).invert(),ir.copy(e.ray).applyMatrix4(Ih),n.boundingBox!==null&&ir.intersectsBox(n.boundingBox)===!1))return;let r;const o=n.index,l=n.attributes.position,c=n.morphAttributes.position,h=n.morphTargetsRelative,u=n.attributes.uv,f=n.attributes.uv2,d=n.groups,p=n.drawRange;if(o!==null)if(Array.isArray(i))for(let m=0,g=d.length;m<g;m++){const y=d[m],x=i[y.materialIndex],b=Math.max(y.start,p.start),v=Math.min(o.count,Math.min(y.start+y.count,p.start+p.count));for(let M=b,T=v;M<T;M+=3){const C=o.getX(M),_=o.getX(M+1),E=o.getX(M+2);r=_a(this,x,e,ir,l,c,h,u,f,C,_,E),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=y.materialIndex,t.push(r))}}else{const m=Math.max(0,p.start),g=Math.min(o.count,p.start+p.count);for(let y=m,x=g;y<x;y+=3){const b=o.getX(y),v=o.getX(y+1),M=o.getX(y+2);r=_a(this,i,e,ir,l,c,h,u,f,b,v,M),r&&(r.faceIndex=Math.floor(y/3),t.push(r))}}else if(l!==void 0)if(Array.isArray(i))for(let m=0,g=d.length;m<g;m++){const y=d[m],x=i[y.materialIndex],b=Math.max(y.start,p.start),v=Math.min(l.count,Math.min(y.start+y.count,p.start+p.count));for(let M=b,T=v;M<T;M+=3){const C=M,_=M+1,E=M+2;r=_a(this,x,e,ir,l,c,h,u,f,C,_,E),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=y.materialIndex,t.push(r))}}else{const m=Math.max(0,p.start),g=Math.min(l.count,p.start+p.count);for(let y=m,x=g;y<x;y+=3){const b=y,v=y+1,M=y+2;r=_a(this,i,e,ir,l,c,h,u,f,b,v,M),r&&(r.faceIndex=Math.floor(y/3),t.push(r))}}}}function m0(a,e,t,n,i,s,r,o){let l;if(e.side===kn?l=n.intersectTriangle(r,s,i,!0,o):l=n.intersectTriangle(i,s,r,e.side!==wi,o),l===null)return null;va.copy(o),va.applyMatrix4(a.matrixWorld);const c=t.ray.origin.distanceTo(va);return c<t.near||c>t.far?null:{distance:c,point:va.clone(),object:a}}function _a(a,e,t,n,i,s,r,o,l,c,h,u){ki.fromBufferAttribute(i,c),Oi.fromBufferAttribute(i,h),Bi.fromBufferAttribute(i,u);const f=a.morphTargetInfluences;if(s&&f){da.set(0,0,0),pa.set(0,0,0),ma.set(0,0,0);for(let p=0,m=s.length;p<m;p++){const g=f[p],y=s[p];g!==0&&(nc.fromBufferAttribute(y,c),ic.fromBufferAttribute(y,h),sc.fromBufferAttribute(y,u),r?(da.addScaledVector(nc,g),pa.addScaledVector(ic,g),ma.addScaledVector(sc,g)):(da.addScaledVector(nc.sub(ki),g),pa.addScaledVector(ic.sub(Oi),g),ma.addScaledVector(sc.sub(Bi),g)))}ki.add(da),Oi.add(pa),Bi.add(ma)}a.isSkinnedMesh&&(a.boneTransform(c,ki),a.boneTransform(h,Oi),a.boneTransform(u,Bi));const d=m0(a,e,t,n,ki,Oi,Bi,rc);if(d){o&&(ga.fromBufferAttribute(o,c),ya.fromBufferAttribute(o,h),xa.fromBufferAttribute(o,u),d.uv=Fn.getUV(rc,ki,Oi,Bi,ga,ya,xa,new fe)),l&&(ga.fromBufferAttribute(l,c),ya.fromBufferAttribute(l,h),xa.fromBufferAttribute(l,u),d.uv2=Fn.getUV(rc,ki,Oi,Bi,ga,ya,xa,new fe));const p={a:c,b:h,c:u,normal:new I,materialIndex:0};Fn.getNormal(ki,Oi,Bi,p.normal),d.face=p}return d}class Si extends Xe{constructor(e=1,t=1,n=1,i=1,s=1,r=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:r};const o=this;i=Math.floor(i),s=Math.floor(s),r=Math.floor(r);const l=[],c=[],h=[],u=[];let f=0,d=0;p("z","y","x",-1,-1,n,t,e,r,s,0),p("z","y","x",1,-1,n,t,-e,r,s,1),p("x","z","y",1,1,e,n,t,i,r,2),p("x","z","y",1,-1,e,n,-t,i,r,3),p("x","y","z",1,-1,e,t,n,i,s,4),p("x","y","z",-1,-1,e,t,-n,i,s,5),this.setIndex(l),this.setAttribute("position",new Ce(c,3)),this.setAttribute("normal",new Ce(h,3)),this.setAttribute("uv",new Ce(u,2));function p(m,g,y,x,b,v,M,T,C,_,E){const F=v/C,U=M/_,q=v/2,K=M/2,G=T/2,X=C+1,O=_+1;let j=0,Y=0;const W=new I;for(let Z=0;Z<O;Z++){const ee=Z*U-K;for(let Q=0;Q<X;Q++){const ie=Q*F-q;W[m]=ie*x,W[g]=ee*b,W[y]=G,c.push(W.x,W.y,W.z),W[m]=0,W[g]=0,W[y]=T>0?1:-1,h.push(W.x,W.y,W.z),u.push(Q/C),u.push(1-Z/_),j+=1}}for(let Z=0;Z<_;Z++)for(let ee=0;ee<C;ee++){const Q=f+ee+X*Z,ie=f+ee+X*(Z+1),ae=f+(ee+1)+X*(Z+1),re=f+(ee+1)+X*Z;l.push(Q,ie,re),l.push(ie,ae,re),Y+=6}o.addGroup(d,Y,E),d+=Y,f+=j}}static fromJSON(e){return new Si(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function Tr(a){const e={};for(const t in a){e[t]={};for(const n in a[t]){const i=a[t][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?e[t][n]=i.clone():Array.isArray(i)?e[t][n]=i.slice():e[t][n]=i}}return e}function an(a){const e={};for(let t=0;t<a.length;t++){const n=Tr(a[t]);for(const i in n)e[i]=n[i]}return e}function g0(a){const e=[];for(let t=0;t<a.length;t++)e.push(a[t].clone());return e}const fp={clone:Tr,merge:an};var y0=`void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}`,x0=`void main() {
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
}`;class ni extends Wt{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=y0,this.fragmentShader=x0,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&(e.attributes!==void 0&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(e))}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Tr(e.uniforms),this.uniformsGroups=g0(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const i in this.uniforms){const r=this.uniforms[i].value;r&&r.isTexture?t.uniforms[i]={type:"t",value:r.toJSON(e).uuid}:r&&r.isColor?t.uniforms[i]={type:"c",value:r.getHex()}:r&&r.isVector2?t.uniforms[i]={type:"v2",value:r.toArray()}:r&&r.isVector3?t.uniforms[i]={type:"v3",value:r.toArray()}:r&&r.isVector4?t.uniforms[i]={type:"v4",value:r.toArray()}:r&&r.isMatrix3?t.uniforms[i]={type:"m3",value:r.toArray()}:r&&r.isMatrix4?t.uniforms[i]={type:"m4",value:r.toArray()}:t.uniforms[i]={value:r}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const n={};for(const i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class wl extends pt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Ne,this.projectionMatrix=new Ne,this.projectionMatrixInverse=new Ne}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class Ot extends wl{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Eo*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Es*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Eo*2*Math.atan(Math.tan(Es*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,i,s,r){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=r,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Es*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,s=-.5*i;const r=this.view;if(this.view!==null&&this.view.enabled){const l=r.fullWidth,c=r.fullHeight;s+=r.offsetX*i/l,t-=r.offsetY*n/c,i*=r.width/l,n*=r.height/c}const o=this.filmOffset;o!==0&&(s+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const sr=90,rr=1;class dp extends pt{constructor(e,t,n){if(super(),this.type="CubeCamera",n.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=n;const i=new Ot(sr,rr,e,t);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new I(1,0,0)),this.add(i);const s=new Ot(sr,rr,e,t);s.layers=this.layers,s.up.set(0,-1,0),s.lookAt(new I(-1,0,0)),this.add(s);const r=new Ot(sr,rr,e,t);r.layers=this.layers,r.up.set(0,0,1),r.lookAt(new I(0,1,0)),this.add(r);const o=new Ot(sr,rr,e,t);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(new I(0,-1,0)),this.add(o);const l=new Ot(sr,rr,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new I(0,0,1)),this.add(l);const c=new Ot(sr,rr,e,t);c.layers=this.layers,c.up.set(0,-1,0),c.lookAt(new I(0,0,-1)),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();const n=this.renderTarget,[i,s,r,o,l,c]=this.children,h=e.getRenderTarget(),u=e.toneMapping,f=e.xr.enabled;e.toneMapping=Qn,e.xr.enabled=!1;const d=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,i),e.setRenderTarget(n,1),e.render(t,s),e.setRenderTarget(n,2),e.render(t,r),e.setRenderTarget(n,3),e.render(t,o),e.setRenderTarget(n,4),e.render(t,l),n.texture.generateMipmaps=d,e.setRenderTarget(n,5),e.render(t,c),e.setRenderTarget(h),e.toneMapping=u,e.xr.enabled=f,n.texture.needsPMREMUpdate=!0}}class Vo extends It{constructor(e,t,n,i,s,r,o,l,c,h){e=e!==void 0?e:[],t=t!==void 0?t:Yi,super(e,t,n,i,s,r,o,l,c,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class pp extends zn{constructor(e,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];this.texture=new Vo(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Ft}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:`
varying vec3 vWorldDirection;
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
}
`,fragmentShader:`
uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include <common>
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
}
`},i=new Si(5,5,5),s=new ni({name:"CubemapFromEquirect",uniforms:Tr(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:kn,blending:_i});s.uniforms.tEquirect.value=t;const r=new Rt(i,s),o=t.minFilter;return t.minFilter===oi&&(t.minFilter=Ft),new dp(1,10,this).update(e,r),t.minFilter=o,r.geometry.dispose(),r.material.dispose(),this}clear(e,t,n,i){const s=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(s)}}const oc=new I,v0=new I,_0=new dn;class Vi{constructor(e=new I(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const i=oc.subVectors(n,t).cross(v0.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const n=e.delta(oc),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:t.copy(n).multiplyScalar(s).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||_0.getNormalMatrix(e),i=this.coplanarPoint(oc).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const or=new is,ba=new I;class Ml{constructor(e=new Vi,t=new Vi,n=new Vi,i=new Vi,s=new Vi,r=new Vi){this.planes=[e,t,n,i,s,r]}set(e,t,n,i,s,r){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(s),o[5].copy(r),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e){const t=this.planes,n=e.elements,i=n[0],s=n[1],r=n[2],o=n[3],l=n[4],c=n[5],h=n[6],u=n[7],f=n[8],d=n[9],p=n[10],m=n[11],g=n[12],y=n[13],x=n[14],b=n[15];return t[0].setComponents(o-i,u-l,m-f,b-g).normalize(),t[1].setComponents(o+i,u+l,m+f,b+g).normalize(),t[2].setComponents(o+s,u+c,m+d,b+y).normalize(),t[3].setComponents(o-s,u-c,m-d,b-y).normalize(),t[4].setComponents(o-r,u-h,m-p,b-x).normalize(),t[5].setComponents(o+r,u+h,m+p,b+x).normalize(),this}intersectsObject(e){const t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),or.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(or)}intersectsSprite(e){return or.center.set(0,0,0),or.radius=.7071067811865476,or.applyMatrix4(e.matrixWorld),this.intersectsSphere(or)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)<i)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const i=t[n];if(ba.x=i.normal.x>0?e.max.x:e.min.x,ba.y=i.normal.y>0?e.max.y:e.min.y,ba.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(ba)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function mp(){let a=null,e=!1,t=null,n=null;function i(s,r){t(s,r),n=a.requestAnimationFrame(i)}return{start:function(){e!==!0&&t!==null&&(n=a.requestAnimationFrame(i),e=!0)},stop:function(){a.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){a=s}}}function b0(a,e){const t=e.isWebGL2,n=new WeakMap;function i(c,h){const u=c.array,f=c.usage,d=a.createBuffer();a.bindBuffer(h,d),a.bufferData(h,u,f),c.onUploadCallback();let p;if(u instanceof Float32Array)p=5126;else if(u instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)p=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else p=5123;else if(u instanceof Int16Array)p=5122;else if(u instanceof Uint32Array)p=5125;else if(u instanceof Int32Array)p=5124;else if(u instanceof Int8Array)p=5120;else if(u instanceof Uint8Array)p=5121;else if(u instanceof Uint8ClampedArray)p=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+u);return{buffer:d,type:p,bytesPerElement:u.BYTES_PER_ELEMENT,version:c.version}}function s(c,h,u){const f=h.array,d=h.updateRange;a.bindBuffer(u,c),d.count===-1?a.bufferSubData(u,0,f):(t?a.bufferSubData(u,d.offset*f.BYTES_PER_ELEMENT,f,d.offset,d.count):a.bufferSubData(u,d.offset*f.BYTES_PER_ELEMENT,f.subarray(d.offset,d.offset+d.count)),d.count=-1)}function r(c){return c.isInterleavedBufferAttribute&&(c=c.data),n.get(c)}function o(c){c.isInterleavedBufferAttribute&&(c=c.data);const h=n.get(c);h&&(a.deleteBuffer(h.buffer),n.delete(c))}function l(c,h){if(c.isGLBufferAttribute){const f=n.get(c);(!f||f.version<c.version)&&n.set(c,{buffer:c.buffer,type:c.type,bytesPerElement:c.elementSize,version:c.version});return}c.isInterleavedBufferAttribute&&(c=c.data);const u=n.get(c);u===void 0?n.set(c,i(c,h)):u.version<c.version&&(s(u.buffer,c,h),u.version=c.version)}return{get:r,remove:o,update:l}}class Ps extends Xe{constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const s=e/2,r=t/2,o=Math.floor(n),l=Math.floor(i),c=o+1,h=l+1,u=e/o,f=t/l,d=[],p=[],m=[],g=[];for(let y=0;y<h;y++){const x=y*f-r;for(let b=0;b<c;b++){const v=b*u-s;p.push(v,-x,0),m.push(0,0,1),g.push(b/o),g.push(1-y/l)}}for(let y=0;y<l;y++)for(let x=0;x<o;x++){const b=x+c*y,v=x+c*(y+1),M=x+1+c*(y+1),T=x+1+c*y;d.push(b,v,T),d.push(v,M,T)}this.setIndex(d),this.setAttribute("position",new Ce(p,3)),this.setAttribute("normal",new Ce(m,3)),this.setAttribute("uv",new Ce(g,2))}static fromJSON(e){return new Ps(e.width,e.height,e.widthSegments,e.heightSegments)}}var w0=`#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
#endif`,M0=`#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`,S0=`#ifdef USE_ALPHATEST
if ( diffuseColor.a < alphaTest ) discard;
#endif`,T0=`#ifdef USE_ALPHATEST
uniform float alphaTest;
#endif`,A0=`#ifdef USE_AOMAP
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
reflectedLight.indirectDiffuse *= ambientOcclusion;
#if defined( USE_ENVMAP ) && defined( STANDARD )
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
#endif
#endif`,E0=`#ifdef USE_AOMAP
uniform sampler2D aoMap;
uniform float aoMapIntensity;
#endif`,C0="vec3 transformed = vec3( position );",L0=`vec3 objectNormal = vec3( normal );
#ifdef USE_TANGENT
vec3 objectTangent = vec3( tangent.xyz );
#endif`,R0=`vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
return RECIPROCAL_PI * diffuseColor;
}
vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
}
float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
}
vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
float x2 = x * x;
float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
}
float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
float a2 = pow2( alpha );
float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
return 0.5 / max( gv + gl, EPSILON );
}
float D_GGX( const in float alpha, const in float dotNH ) {
float a2 = pow2( alpha );
float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
return RECIPROCAL_PI * a2 / pow2( denom );
}
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( f0, f90, dotVH );
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
return F * ( V * D );
}
#ifdef USE_IRIDESCENCE
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
return F * ( V * D );
}
#endif
vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
const float LUT_SIZE = 64.0;
const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
const float LUT_BIAS = 0.5 / LUT_SIZE;
float dotNV = saturate( dot( N, V ) );
vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
uv = uv * LUT_SCALE + LUT_BIAS;
return uv;
}
float LTC_ClippedSphereFormFactor( const in vec3 f ) {
float l = length( f );
return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
}
vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
float x = dot( v1, v2 );
float y = abs( x );
float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
float b = 3.4175940 + ( 4.1616724 + y ) * y;
float v = a / b;
float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
return cross( v1, v2 ) * theta_sintheta;
}
vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
vec3 lightNormal = cross( v1, v2 );
if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
vec3 T1, T2;
T1 = normalize( V - N * dot( V, N ) );
T2 = - cross( N, T1 );
mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
vec3 coords[ 4 ];
coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
coords[ 0 ] = normalize( coords[ 0 ] );
coords[ 1 ] = normalize( coords[ 1 ] );
coords[ 2 ] = normalize( coords[ 2 ] );
coords[ 3 ] = normalize( coords[ 3 ] );
vec3 vectorFormFactor = vec3( 0.0 );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
return vec3( result );
}
float G_BlinnPhong_Implicit( ) {
return 0.25;
}
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
}
vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( specularColor, 1.0, dotVH );
float G = G_BlinnPhong_Implicit( );
float D = D_BlinnPhong( shininess, dotNH );
return F * ( G * D );
}
#if defined( USE_SHEEN )
float D_Charlie( float roughness, float dotNH ) {
float alpha = pow2( roughness );
float invAlpha = 1.0 / alpha;
float cos2h = dotNH * dotNH;
float sin2h = max( 1.0 - cos2h, 0.0078125 );
return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
}
float V_Neubelt( float dotNV, float dotNL ) {
return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
}
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float D = D_Charlie( sheenRoughness, dotNH );
float V = V_Neubelt( dotNV, dotNL );
return sheenColor * ( D * V );
}
#endif`,I0=`#ifdef USE_IRIDESCENCE
const mat3 XYZ_TO_REC709 = mat3(
3.2404542, -0.9692660, 0.0556434,
-1.5371385, 1.8760108, -0.2040259,
-0.4985314, 0.0415560, 1.0572252
);
vec3 Fresnel0ToIor( vec3 fresnel0 ) {
vec3 sqrtF0 = sqrt( fresnel0 );
return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );
}
vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );
}
float IorToFresnel0( float transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));
}
vec3 evalSensitivity( float OPD, vec3 shift ) {
float phase = 2.0 * PI * OPD * 1.0e-9;
vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );
vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );
vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );
vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );
xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );
xyz /= 1.0685e-7;
vec3 rgb = XYZ_TO_REC709 * xyz;
return rgb;
}
vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {
vec3 I;
float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );
float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );
float cosTheta2Sq = 1.0 - sinTheta2Sq;
if ( cosTheta2Sq < 0.0 ) {
return vec3( 1.0 );
}
float cosTheta2 = sqrt( cosTheta2Sq );
float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
float R12 = F_Schlick( R0, 1.0, cosTheta1 );
float R21 = R12;
float T121 = 1.0 - R12;
float phi12 = 0.0;
if ( iridescenceIOR < outsideIOR ) phi12 = PI;
float phi21 = PI - phi12;
vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );
vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );
vec3 phi23 = vec3( 0.0 );
if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;
if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;
if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;
float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;
vec3 phi = vec3( phi21 ) + phi23;
vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );
vec3 r123 = sqrt( R123 );
vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );
vec3 C0 = R12 + Rs;
I = C0;
vec3 Cm = Rs - T121;
for ( int m = 1; m <= 2; ++ m ) {
Cm *= r123;
vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );
I += Cm * Sm;
}
return max( I, vec3( 0.0 ) );
}
#endif`,P0=`#ifdef USE_BUMPMAP
uniform sampler2D bumpMap;
uniform float bumpScale;
vec2 dHdxy_fwd() {
vec2 dSTdx = dFdx( vUv );
vec2 dSTdy = dFdy( vUv );
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
return vec2( dBx, dBy );
}
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
vec3 vSigmaX = dFdx( surf_pos.xyz );
vec3 vSigmaY = dFdy( surf_pos.xyz );
vec3 vN = surf_norm;
vec3 R1 = cross( vSigmaY, vN );
vec3 R2 = cross( vN, vSigmaX );
float fDet = dot( vSigmaX, R1 ) * faceDirection;
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
return normalize( abs( fDet ) * surf_norm - vGrad );
}
#endif`,D0=`#if NUM_CLIPPING_PLANES > 0
vec4 plane;
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
bool clipped = true;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
}
#pragma unroll_loop_end
if ( clipped ) discard;
#endif
#endif`,F0=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
#endif`,N0=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
#endif`,k0=`#if NUM_CLIPPING_PLANES > 0
vClipPosition = - mvPosition.xyz;
#endif`,O0=`#if defined( USE_COLOR_ALPHA )
diffuseColor *= vColor;
#elif defined( USE_COLOR )
diffuseColor.rgb *= vColor;
#endif`,B0=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR )
varying vec3 vColor;
#endif`,z0=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
varying vec3 vColor;
#endif`,U0=`#if defined( USE_COLOR_ALPHA )
vColor = vec4( 1.0 );
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
vColor = vec3( 1.0 );
#endif
#ifdef USE_COLOR
vColor *= color;
#endif
#ifdef USE_INSTANCING_COLOR
vColor.xyz *= instanceColor.xyz;
#endif`,G0=`#define PI 3.141592653589793
#define PI2 6.283185307179586
#define PI_HALF 1.5707963267948966
#define RECIPROCAL_PI 0.3183098861837907
#define RECIPROCAL_PI2 0.15915494309189535
#define EPSILON 1e-6
#ifndef saturate
#define saturate( a ) clamp( a, 0.0, 1.0 )
#endif
#define whiteComplement( a ) ( 1.0 - saturate( a ) )
float pow2( const in float x ) { return x*x; }
vec3 pow2( const in vec3 x ) { return x*x; }
float pow3( const in float x ) { return x*x*x; }
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }
highp float rand( const in vec2 uv ) {
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
return fract( sin( sn ) * c );
}
#ifdef HIGH_PRECISION
float precisionSafeLength( vec3 v ) { return length( v ); }
#else
float precisionSafeLength( vec3 v ) {
float maxComponent = max3( abs( v ) );
return length( v / maxComponent ) * maxComponent;
}
#endif
struct IncidentLight {
vec3 color;
vec3 direction;
bool visible;
};
struct ReflectedLight {
vec3 directDiffuse;
vec3 directSpecular;
vec3 indirectDiffuse;
vec3 indirectSpecular;
};
struct GeometricContext {
vec3 position;
vec3 normal;
vec3 viewDir;
#ifdef USE_CLEARCOAT
vec3 clearcoatNormal;
#endif
};
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
}
mat3 transposeMat3( const in mat3 m ) {
mat3 tmp;
tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
return tmp;
}
float luminance( const in vec3 rgb ) {
const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
return dot( weights, rgb );
}
bool isPerspectiveMatrix( mat4 m ) {
return m[ 2 ][ 3 ] == - 1.0;
}
vec2 equirectUv( in vec3 dir ) {
float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
return vec2( u, v );
}`,V0=`#ifdef ENVMAP_TYPE_CUBE_UV
#define cubeUV_minMipLevel 4.0
#define cubeUV_minTileSize 16.0
float getFace( vec3 direction ) {
vec3 absDirection = abs( direction );
float face = - 1.0;
if ( absDirection.x > absDirection.z ) {
if ( absDirection.x > absDirection.y )
face = direction.x > 0.0 ? 0.0 : 3.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
} else {
if ( absDirection.z > absDirection.y )
face = direction.z > 0.0 ? 2.0 : 5.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
}
return face;
}
vec2 getUV( vec3 direction, float face ) {
vec2 uv;
if ( face == 0.0 ) {
uv = vec2( direction.z, direction.y ) / abs( direction.x );
} else if ( face == 1.0 ) {
uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
} else if ( face == 2.0 ) {
uv = vec2( - direction.x, direction.y ) / abs( direction.z );
} else if ( face == 3.0 ) {
uv = vec2( - direction.z, direction.y ) / abs( direction.x );
} else if ( face == 4.0 ) {
uv = vec2( - direction.x, direction.z ) / abs( direction.y );
} else {
uv = vec2( direction.x, direction.y ) / abs( direction.z );
}
return 0.5 * ( uv + 1.0 );
}
vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
float face = getFace( direction );
float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
mipInt = max( mipInt, cubeUV_minMipLevel );
float faceSize = exp2( mipInt );
vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
if ( face > 2.0 ) {
uv.y += faceSize;
face -= 3.0;
}
uv.x += face * faceSize;
uv.x += filterInt * 3.0 * cubeUV_minTileSize;
uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
uv.x *= CUBEUV_TEXEL_WIDTH;
uv.y *= CUBEUV_TEXEL_HEIGHT;
#ifdef texture2DGradEXT
return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;
#else
return texture2D( envMap, uv ).rgb;
#endif
}
#define r0 1.0
#define v0 0.339
#define m0 - 2.0
#define r1 0.8
#define v1 0.276
#define m1 - 1.0
#define r4 0.4
#define v4 0.046
#define m4 2.0
#define r5 0.305
#define v5 0.016
#define m5 3.0
#define r6 0.21
#define v6 0.0038
#define m6 4.0
float roughnessToMip( float roughness ) {
float mip = 0.0;
if ( roughness >= r1 ) {
mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;
} else if ( roughness >= r4 ) {
mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;
} else if ( roughness >= r5 ) {
mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;
} else if ( roughness >= r6 ) {
mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;
} else {
mip = - 2.0 * log2( 1.16 * roughness ); }
return mip;
}
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
float mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );
float mipF = fract( mip );
float mipInt = floor( mip );
vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
if ( mipF == 0.0 ) {
return vec4( color0, 1.0 );
} else {
vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
return vec4( mix( color0, color1, mipF ), 1.0 );
}
}
#endif`,H0=`vec3 transformedNormal = objectNormal;
#ifdef USE_INSTANCING
mat3 m = mat3( instanceMatrix );
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
transformedNormal = m * transformedNormal;
#endif
transformedNormal = normalMatrix * transformedNormal;
#ifdef FLIP_SIDED
transformedNormal = - transformedNormal;
#endif
#ifdef USE_TANGENT
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
#ifdef FLIP_SIDED
transformedTangent = - transformedTangent;
#endif
#endif`,W0=`#ifdef USE_DISPLACEMENTMAP
uniform sampler2D displacementMap;
uniform float displacementScale;
uniform float displacementBias;
#endif`,q0=`#ifdef USE_DISPLACEMENTMAP
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
#endif`,X0=`#ifdef USE_EMISSIVEMAP
vec4 emissiveColor = texture2D( emissiveMap, vUv );
totalEmissiveRadiance *= emissiveColor.rgb;
#endif`,j0=`#ifdef USE_EMISSIVEMAP
uniform sampler2D emissiveMap;
#endif`,Y0="gl_FragColor = linearToOutputTexel( gl_FragColor );",Z0=`vec4 LinearToLinear( in vec4 value ) {
return value;
}
vec4 LinearTosRGB( in vec4 value ) {
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
}`,K0=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vec3 cameraToFrag;
if ( isOrthographic ) {
cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToFrag = normalize( vWorldPosition - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vec3 reflectVec = reflect( cameraToFrag, worldNormal );
#else
vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
#endif
#else
vec3 reflectVec = vReflect;
#endif
#ifdef ENVMAP_TYPE_CUBE
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
#else
vec4 envColor = vec4( 0.0 );
#endif
#ifdef ENVMAP_BLENDING_MULTIPLY
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_MIX )
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_ADD )
outgoingLight += envColor.xyz * specularStrength * reflectivity;
#endif
#endif`,J0=`#ifdef USE_ENVMAP
uniform float envMapIntensity;
uniform float flipEnvMap;
#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#else
uniform sampler2D envMap;
#endif
#endif`,$0=`#ifdef USE_ENVMAP
uniform float reflectivity;
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
uniform float refractionRatio;
#else
varying vec3 vReflect;
#endif
#endif`,Q0=`#ifdef USE_ENVMAP
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
#else
varying vec3 vReflect;
uniform float refractionRatio;
#endif
#endif`,ey=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vWorldPosition = worldPosition.xyz;
#else
vec3 cameraToVertex;
if ( isOrthographic ) {
cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vReflect = reflect( cameraToVertex, worldNormal );
#else
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
#endif
#endif
#endif`,ty=`#ifdef USE_FOG
vFogDepth = - mvPosition.z;
#endif`,ny=`#ifdef USE_FOG
varying float vFogDepth;
#endif`,iy=`#ifdef USE_FOG
#ifdef FOG_EXP2
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
#else
float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
#endif
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
#endif`,sy=`#ifdef USE_FOG
uniform vec3 fogColor;
varying float vFogDepth;
#ifdef FOG_EXP2
uniform float fogDensity;
#else
uniform float fogNear;
uniform float fogFar;
#endif
#endif`,ry=`#ifdef USE_GRADIENTMAP
uniform sampler2D gradientMap;
#endif
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
float dotNL = dot( normal, lightDirection );
vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
#ifdef USE_GRADIENTMAP
return vec3( texture2D( gradientMap, coord ).r );
#else
return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );
#endif
}`,oy=`#ifdef USE_LIGHTMAP
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
reflectedLight.indirectDiffuse += lightMapIrradiance;
#endif`,ay=`#ifdef USE_LIGHTMAP
uniform sampler2D lightMap;
uniform float lightMapIntensity;
#endif`,ly=`vec3 diffuse = vec3( 1.0 );
GeometricContext geometry;
geometry.position = mvPosition.xyz;
geometry.normal = normalize( transformedNormal );
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
GeometricContext backGeometry;
backGeometry.position = geometry.position;
backGeometry.normal = -geometry.normal;
backGeometry.viewDir = geometry.viewDir;
vLightFront = vec3( 0.0 );
vIndirectFront = vec3( 0.0 );
#ifdef DOUBLE_SIDED
vLightBack = vec3( 0.0 );
vIndirectBack = vec3( 0.0 );
#endif
IncidentLight directLight;
float dotNL;
vec3 directLightColor_Diffuse;
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
#ifdef DOUBLE_SIDED
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
#endif
#if NUM_POINT_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
getPointLightInfo( pointLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
getSpotLightInfo( spotLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_DIR_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
dotNL = dot( geometry.normal, directLight.direction );
directLightColor_Diffuse = directLight.color;
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
#ifdef DOUBLE_SIDED
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
#endif
}
#pragma unroll_loop_end
#endif
#if NUM_HEMI_LIGHTS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
#ifdef DOUBLE_SIDED
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
#endif
}
#pragma unroll_loop_end
#endif`,cy=`uniform bool receiveShadow;
uniform vec3 ambientLightColor;
uniform vec3 lightProbe[ 9 ];
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
float x = normal.x, y = normal.y, z = normal.z;
vec3 result = shCoefficients[ 0 ] * 0.886227;
result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
return result;
}
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
return irradiance;
}
vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
vec3 irradiance = ambientLightColor;
return irradiance;
}
float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
#if defined ( PHYSICALLY_CORRECT_LIGHTS )
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
if ( cutoffDistance > 0.0 ) {
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
}
return distanceFalloff;
#else
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
}
return 1.0;
#endif
}
float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
return smoothstep( coneCosine, penumbraCosine, angleCosine );
}
#if NUM_DIR_LIGHTS > 0
struct DirectionalLight {
vec3 direction;
vec3 color;
};
uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {
light.color = directionalLight.color;
light.direction = directionalLight.direction;
light.visible = true;
}
#endif
#if NUM_POINT_LIGHTS > 0
struct PointLight {
vec3 position;
vec3 color;
float distance;
float decay;
};
uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {
vec3 lVector = pointLight.position - geometry.position;
light.direction = normalize( lVector );
float lightDistance = length( lVector );
light.color = pointLight.color;
light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
}
#endif
#if NUM_SPOT_LIGHTS > 0
struct SpotLight {
vec3 position;
vec3 direction;
vec3 color;
float distance;
float decay;
float coneCos;
float penumbraCos;
};
uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {
vec3 lVector = spotLight.position - geometry.position;
light.direction = normalize( lVector );
float angleCos = dot( light.direction, spotLight.direction );
float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
if ( spotAttenuation > 0.0 ) {
float lightDistance = length( lVector );
light.color = spotLight.color * spotAttenuation;
light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
} else {
light.color = vec3( 0.0 );
light.visible = false;
}
}
#endif
#if NUM_RECT_AREA_LIGHTS > 0
struct RectAreaLight {
vec3 color;
vec3 position;
vec3 halfWidth;
vec3 halfHeight;
};
uniform sampler2D ltc_1; uniform sampler2D ltc_2;
uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
#endif
#if NUM_HEMI_LIGHTS > 0
struct HemisphereLight {
vec3 direction;
vec3 skyColor;
vec3 groundColor;
};
uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
float dotNL = dot( normal, hemiLight.direction );
float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
return irradiance;
}
#endif`,uy=`#if defined( USE_ENVMAP )
vec3 getIBLIrradiance( const in vec3 normal ) {
#if defined( ENVMAP_TYPE_CUBE_UV )
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
return PI * envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
#if defined( ENVMAP_TYPE_CUBE_UV )
vec3 reflectVec = reflect( - viewDir, normal );
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
return envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
#endif`,hy=`ToonMaterial material;
material.diffuseColor = diffuseColor.rgb;`,fy=`varying vec3 vViewPosition;
struct ToonMaterial {
vec3 diffuseColor;
};
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Toon
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
#define Material_LightProbeLOD( material ) (0)`,dy=`BlinnPhongMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularColor = specular;
material.specularShininess = shininess;
material.specularStrength = specularStrength;`,py=`varying vec3 vViewPosition;
struct BlinnPhongMaterial {
vec3 diffuseColor;
vec3 specularColor;
float specularShininess;
float specularStrength;
};
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
}
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_BlinnPhong
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
#define Material_LightProbeLOD( material ) (0)`,my=`PhysicalMaterial material;
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
vec3 dxy = max( abs( dFdx(
gitextract_md_qcwnx/ ├── .dockerignore ├── .gitignore ├── .npmignore ├── .vscode/ │ └── extensions.json ├── Dockerfile ├── LICENSE ├── dist/ │ ├── style.css │ ├── types/ │ │ ├── 3dLoader/ │ │ │ └── vue3dLoader.vue.d.ts │ │ └── index.d.ts │ ├── vue-3d-loader.cjs.js │ ├── vue-3d-loader.esm.js │ └── vue-3d-loader.global.js ├── index.html ├── package.json ├── public/ │ ├── assets/ │ │ └── draco/ │ │ └── gltf/ │ │ ├── draco_decoder.js │ │ ├── draco_decoder.wasm │ │ ├── draco_encoder.js │ │ └── draco_wasm_wrapper.js │ └── models/ │ ├── collada/ │ │ ├── elf/ │ │ │ └── elf.dae │ │ ├── pump/ │ │ │ └── pump.dae │ │ └── stormtrooper/ │ │ └── stormtrooper.dae │ ├── fbx/ │ │ ├── Samba Dancing.fbx │ │ ├── nurbs.fbx │ │ └── stanford-bunny.fbx │ ├── gltf/ │ │ ├── DamagedHelmet.gltf │ │ └── LittlestTokyo.glb │ ├── json/ │ │ ├── lightmap.json │ │ └── readme.txt │ ├── obj/ │ │ ├── male02.mtl │ │ ├── male02.obj │ │ ├── readme.txt │ │ └── tree.obj │ ├── ply/ │ │ └── Lucy100k.ply │ └── stl/ │ └── colored.stl ├── readme.md ├── readme_CN.md ├── scripts/ │ └── build-types.js ├── src/ │ ├── 3dLoader/ │ │ ├── loadModel.ts │ │ └── vue3dLoader.vue │ ├── App.vue │ ├── env.d.ts │ ├── examples/ │ │ ├── add-label.vue │ │ ├── background-color-and-alpha.vue │ │ ├── camera-position-and-rotate.vue │ │ ├── clone-same-obj.vue │ │ ├── disable-animations.vue │ │ ├── enable-axes-grid.vue │ │ ├── enable-damping.vue │ │ ├── event-model.vue │ │ ├── exampleIndex.vue │ │ ├── height-and-width.vue │ │ ├── interactive-controls.vue │ │ ├── light-model.vue │ │ ├── load-a-model.vue │ │ ├── load-json-model.vue │ │ ├── load-multiple-models.vue │ │ ├── loader-draco-model.vue │ │ ├── materials-and-textures.vue │ │ ├── min-max-distance.vue │ │ ├── parallel-load-models.vue │ │ ├── point-light-follow-camera.vue │ │ ├── progress-bar.vue │ │ ├── rotate-model.vue │ │ ├── set-vertical-horizontal.vue │ │ └── show-fps.vue │ ├── index.ts │ └── main.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts
Showing preview only (721K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7965 symbols across 9 files)
FILE: dist/types/3dLoader/vue3dLoader.vue.d.ts
type coordinates (line 3) | interface coordinates {
type controlsValue (line 8) | interface controlsValue {
type plyMaterial (line 12) | type plyMaterial = 'MeshBasicMaterial' | 'MeshStandardMaterial';
type encode (line 13) | type encode = "linear" | "sRGB";
FILE: dist/vue-3d-loader.cjs.js
class ai (line 5) | class ai{addEventListener(e,t){this._listeners===void 0&&(this._listener...
method addEventListener (line 5) | addEventListener(e,t){this._listeners===void 0&&(this._listeners={});c...
method hasEventListener (line 5) | hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=thi...
method removeEventListener (line 5) | removeEventListener(e,t){if(this._listeners===void 0)return;const i=th...
method dispatchEvent (line 5) | dispatchEvent(e){if(this._listeners===void 0)return;const n=this._list...
function En (line 5) | function En(){const a=Math.random()*4294967295|0,e=Math.random()*4294967...
function Vt (line 5) | function Vt(a,e,t){return Math.max(e,Math.min(t,a))}
function Lu (line 5) | function Lu(a,e){return(a%e+e)%e}
function Dg (line 5) | function Dg(a,e,t,n,i){return n+(a-e)*(i-n)/(t-e)}
function Fg (line 5) | function Fg(a,e,t){return a!==e?(t-a)/(e-a):0}
function go (line 5) | function go(a,e,t){return(1-t)*a+t*e}
function Ng (line 5) | function Ng(a,e,t,n){return go(a,e,1-Math.exp(-t*n))}
function kg (line 5) | function kg(a,e=1){return e-Math.abs(Lu(a,e*2)-e)}
function Og (line 5) | function Og(a,e,t){return a<=e?0:a>=t?1:(a=(a-e)/(t-e),a*a*(3-2*a))}
function Bg (line 5) | function Bg(a,e,t){return a<=e?0:a>=t?1:(a=(a-e)/(t-e),a*a*a*(a*(a*6-15)...
function zg (line 5) | function zg(a,e){return a+Math.floor(Math.random()*(e-a+1))}
function Ug (line 5) | function Ug(a,e){return a+Math.random()*(e-a)}
function Gg (line 5) | function Gg(a){return a*(.5-Math.random())}
function Vg (line 5) | function Vg(a){a!==void 0&&(_h=a);let e=_h+=1831565813;return e=Math.imu...
function Hg (line 5) | function Hg(a){return a*Es}
function Wg (line 5) | function Wg(a){return a*Eo}
function nu (line 5) | function nu(a){return(a&a-1)===0&&a!==0}
function cp (line 5) | function cp(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))}
function rl (line 5) | function rl(a){return Math.pow(2,Math.floor(Math.log(a)/Math.LN2))}
function qg (line 5) | function qg(a,e,t,n,i){const s=Math.cos,r=Math.sin,o=s(t/2),l=r(t/2),c=s...
function Xg (line 5) | function Xg(a,e){switch(e.constructor){case Float32Array:return a;case U...
function jg (line 5) | function jg(a,e){switch(e.constructor){case Float32Array:return a;case U...
class fe (line 5) | class fe{constructor(e=0,t=0){fe.prototype.isVector2=!0,this.x=e,this.y=...
method constructor (line 5) | constructor(e=0,t=0){fe.prototype.isVector2=!0,this.x=e,this.y=t}
method width (line 5) | get width(){return this.x}
method width (line 5) | set width(e){this.x=e}
method height (line 5) | get height(){return this.y}
method height (line 5) | set height(e){this.y=e}
method set (line 5) | set(e,t){return this.x=e,this.y=t,this}
method setScalar (line 5) | setScalar(e){return this.x=e,this.y=e,this}
method setX (line 5) | setX(e){return this.x=e,this}
method setY (line 5) | setY(e){return this.y=e,this}
method setComponent (line 5) | setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;brea...
method getComponent (line 5) | getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;de...
method clone (line 5) | clone(){return new this.constructor(this.x,this.y)}
method copy (line 5) | copy(e){return this.x=e.x,this.y=e.y,this}
method add (line 5) | add(e){return this.x+=e.x,this.y+=e.y,this}
method addScalar (line 5) | addScalar(e){return this.x+=e,this.y+=e,this}
method addVectors (line 5) | addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}
method addScaledVector (line 5) | addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}
method sub (line 5) | sub(e){return this.x-=e.x,this.y-=e.y,this}
method subScalar (line 5) | subScalar(e){return this.x-=e,this.y-=e,this}
method subVectors (line 5) | subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}
method multiply (line 5) | multiply(e){return this.x*=e.x,this.y*=e.y,this}
method multiplyScalar (line 5) | multiplyScalar(e){return this.x*=e,this.y*=e,this}
method divide (line 5) | divide(e){return this.x/=e.x,this.y/=e.y,this}
method divideScalar (line 5) | divideScalar(e){return this.multiplyScalar(1/e)}
method applyMatrix3 (line 5) | applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0...
method min (line 5) | min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),...
method max (line 5) | max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),...
method clamp (line 5) | clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Mat...
method clampScalar (line 5) | clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=M...
method clampLength (line 5) | clampLength(e,t){const n=this.length();return this.divideScalar(n||1)....
method floor (line 5) | floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}
method ceil (line 5) | ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}
method round (line 5) | round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}
method roundToZero (line 5) | roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this...
method negate (line 5) | negate(){return this.x=-this.x,this.y=-this.y,this}
method dot (line 5) | dot(e){return this.x*e.x+this.y*e.y}
method cross (line 5) | cross(e){return this.x*e.y-this.y*e.x}
method lengthSq (line 5) | lengthSq(){return this.x*this.x+this.y*this.y}
method length (line 5) | length(){return Math.sqrt(this.x*this.x+this.y*this.y)}
method manhattanLength (line 5) | manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}
method normalize (line 5) | normalize(){return this.divideScalar(this.length()||1)}
method angle (line 5) | angle(){return Math.atan2(-this.y,-this.x)+Math.PI}
method distanceTo (line 5) | distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}
method distanceToSquared (line 5) | distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}
method manhattanDistanceTo (line 5) | manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}
method setLength (line 5) | setLength(e){return this.normalize().multiplyScalar(e)}
method lerp (line 5) | lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}
method lerpVectors (line 5) | lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*...
method equals (line 5) | equals(e){return e.x===this.x&&e.y===this.y}
method fromArray (line 5) | fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}
method fromBufferAttribute (line 5) | fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}
method rotateAround (line 5) | rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,r=thi...
method random (line 5) | random(){return this.x=Math.random(),this.y=Math.random(),this}
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this.x,yield this.y}
class dn (line 5) | class dn{constructor(){dn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,...
method constructor (line 5) | constructor(){dn.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0...
method set (line 5) | set(e,t,n,i,s,r,o,l,c){const h=this.elements;return h[0]=e,h[1]=i,h[2]...
method identity (line 5) | identity(){return this.set(1,0,0,0,1,0,0,0,1),this}
method copy (line 5) | copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],...
method extractBasis (line 5) | extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMat...
method setFromMatrix4 (line 5) | setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[...
method multiply (line 5) | multiply(e){return this.multiplyMatrices(this,e)}
method premultiply (line 5) | premultiply(e){return this.multiplyMatrices(e,this)}
method multiplyMatrices (line 5) | multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,...
method multiplyScalar (line 5) | multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e...
method determinant (line 5) | determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4]...
method invert (line 5) | invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=e[...
method transpose (line 5) | transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e...
method getNormalMatrix (line 5) | getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}
method transposeIntoArray (line 5) | transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3]...
method setUvTransform (line 5) | setUvTransform(e,t,n,i,s,r,o){const l=Math.cos(s),c=Math.sin(s);return...
method scale (line 5) | scale(e,t){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=...
method rotate (line 5) | rotate(e){const t=Math.cos(e),n=Math.sin(e),i=this.elements,s=i[0],r=i...
method translate (line 5) | translate(e,t){const n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],...
method equals (line 5) | equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[...
method fromArray (line 5) | fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}
method toArray (line 5) | toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e...
method clone (line 5) | clone(){return new this.constructor().fromArray(this.elements)}
function up (line 5) | function up(a){for(let e=a.length-1;e>=0;--e)if(a[e]>65535)return!0;retu...
function gr (line 5) | function gr(a,e){return new Yg[a](e)}
function Co (line 5) | function Co(a){return document.createElementNS("http://www.w3.org/1999/x...
function Cs (line 5) | function Cs(a){return a<.04045?a*.0773993808:Math.pow(a*.9478672986+.052...
function Ja (line 5) | function Ja(a){return a<.0031308?a*12.92:1.055*Math.pow(a,.41666)-.055}
method workingColorSpace (line 5) | get workingColorSpace(){return Wi}
method workingColorSpace (line 5) | set workingColorSpace(a){console.warn("THREE.ColorManagement: .workingCo...
function Gl (line 5) | function Gl(a,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?a+(e-a)*6*t:t<1/...
function sa (line 5) | function sa(a,e){return e.r=a.r,e.g=a.g,e.b=a.b,e}
class we (line 5) | class we{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,thi...
method constructor (line 5) | constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,t...
method set (line 5) | set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex...
method setScalar (line 5) | setScalar(e){return this.r=e,this.g=e,this.b=e,this}
method setHex (line 5) | setHex(e,t=Jn){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e...
method setRGB (line 5) | setRGB(e,t,n,i=Wi){return this.r=e,this.g=t,this.b=n,In.toWorkingColor...
method setHSL (line 5) | setHSL(e,t,n,i=Wi){if(e=Lu(e,1),t=Vt(t,0,1),n=Vt(n,0,1),t===0)this.r=t...
method setStyle (line 5) | setStyle(e,t=Jn){function n(s){s!==void 0&&parseFloat(s)<1&&console.wa...
method setColorName (line 5) | setColorName(e,t=Jn){const n=hp[e.toLowerCase()];return n!==void 0?thi...
method clone (line 5) | clone(){return new this.constructor(this.r,this.g,this.b)}
method copy (line 5) | copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}
method copySRGBToLinear (line 5) | copySRGBToLinear(e){return this.r=Cs(e.r),this.g=Cs(e.g),this.b=Cs(e.b...
method copyLinearToSRGB (line 5) | copyLinearToSRGB(e){return this.r=Ja(e.r),this.g=Ja(e.g),this.b=Ja(e.b...
method convertSRGBToLinear (line 5) | convertSRGBToLinear(){return this.copySRGBToLinear(this),this}
method convertLinearToSRGB (line 5) | convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}
method getHex (line 5) | getHex(e=Jn){return In.fromWorkingColorSpace(sa(this,Jt),e),Vt(Jt.r*25...
method getHexString (line 5) | getHexString(e=Jn){return("000000"+this.getHex(e).toString(16)).slice(...
method getHSL (line 5) | getHSL(e,t=Wi){In.fromWorkingColorSpace(sa(this,Jt),t);const n=Jt.r,i=...
method getRGB (line 5) | getRGB(e,t=Wi){return In.fromWorkingColorSpace(sa(this,Jt),t),e.r=Jt.r...
method getStyle (line 5) | getStyle(e=Jn){return In.fromWorkingColorSpace(sa(this,Jt),e),e!==Jn?`...
method offsetHSL (line 5) | offsetHSL(e,t,n){return this.getHSL(Hn),Hn.h+=e,Hn.s+=t,Hn.l+=n,this.s...
method add (line 5) | add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}
method addColors (line 5) | addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}
method addScalar (line 5) | addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}
method sub (line 5) | sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e...
method multiply (line 5) | multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}
method multiplyScalar (line 5) | multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}
method lerp (line 5) | lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+...
method lerpColors (line 5) | lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n...
method lerpHSL (line 5) | lerpHSL(e,t){this.getHSL(Hn),e.getHSL(ia);const n=go(Hn.h,ia.h,t),i=go...
method equals (line 5) | equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}
method fromArray (line 5) | fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}
method fromBufferAttribute (line 5) | fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this...
method toJSON (line 5) | toJSON(){return this.getHex()}
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this.r,yield this.g,yield this.b}
class Ru (line 5) | class Ru{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanva...
method getDataURL (line 5) | static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElemen...
method sRGBToLinear (line 5) | static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e inst...
class Ms (line 5) | class Ms{constructor(e=null){this.isSource=!0,this.uuid=En(),this.data=e...
method constructor (line 5) | constructor(e=null){this.isSource=!0,this.uuid=En(),this.data=e,this.v...
method needsUpdate (line 5) | set needsUpdate(e){e===!0&&this.version++}
method toJSON (line 5) | toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this....
function Vl (line 5) | function Vl(a){return typeof HTMLImageElement!="undefined"&&a instanceof...
class It (line 5) | class It extends ai{constructor(e=It.DEFAULT_IMAGE,t=It.DEFAULT_MAPPING,...
method constructor (line 5) | constructor(e=It.DEFAULT_IMAGE,t=It.DEFAULT_MAPPING,n=Zt,i=Zt,s=Ft,r=o...
method image (line 5) | get image(){return this.source.data}
method image (line 5) | set image(e){this.source.data=e}
method updateMatrix (line 5) | updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mi...
method toJSON (line 5) | toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[thi...
method dispose (line 5) | dispose(){this.dispatchEvent({type:"dispose"})}
method transformUv (line 5) | transformUv(e){if(this.mapping!==gl)return e;if(e.applyMatrix3(this.ma...
method needsUpdate (line 5) | set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}
class dt (line 5) | class dt{constructor(e=0,t=0,n=0,i=1){dt.prototype.isVector4=!0,this.x=e...
method constructor (line 5) | constructor(e=0,t=0,n=0,i=1){dt.prototype.isVector4=!0,this.x=e,this.y...
method width (line 5) | get width(){return this.z}
method width (line 5) | set width(e){this.z=e}
method height (line 5) | get height(){return this.w}
method height (line 5) | set height(e){this.w=e}
method set (line 5) | set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}
method setScalar (line 5) | setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}
method setX (line 5) | setX(e){return this.x=e,this}
method setY (line 5) | setY(e){return this.y=e,this}
method setZ (line 5) | setZ(e){return this.z=e,this}
method setW (line 5) | setW(e){return this.w=e,this}
method setComponent (line 5) | setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;brea...
method getComponent (line 5) | getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;ca...
method clone (line 5) | clone(){return new this.constructor(this.x,this.y,this.z,this.w)}
method copy (line 5) | copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e....
method add (line 5) | add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}
method addScalar (line 5) | addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}
method addVectors (line 5) | addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,th...
method addScaledVector (line 5) | addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,...
method sub (line 5) | sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}
method subScalar (line 5) | subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}
method subVectors (line 5) | subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,th...
method multiply (line 5) | multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}
method multiplyScalar (line 5) | multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}
method applyMatrix4 (line 5) | applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,r=e.elements...
method divideScalar (line 5) | divideScalar(e){return this.multiplyScalar(1/e)}
method setAxisAngleFromQuaternion (line 5) | setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqr...
method setAxisAngleFromRotationMatrix (line 5) | setAxisAngleFromRotationMatrix(e){let t,n,i,s;const l=e.elements,c=l[0...
method min (line 5) | min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),...
method max (line 5) | max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),...
method clamp (line 5) | clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Mat...
method clampScalar (line 5) | clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=M...
method clampLength (line 5) | clampLength(e,t){const n=this.length();return this.divideScalar(n||1)....
method floor (line 5) | floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),thi...
method ceil (line 5) | ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z...
method round (line 5) | round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),thi...
method roundToZero (line 5) | roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this...
method negate (line 5) | negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-t...
method dot (line 5) | dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}
method lengthSq (line 5) | lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*thi...
method length (line 5) | length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+th...
method manhattanLength (line 5) | manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(th...
method normalize (line 5) | normalize(){return this.divideScalar(this.length()||1)}
method setLength (line 5) | setLength(e){return this.normalize().multiplyScalar(e)}
method lerp (line 5) | lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+...
method lerpVectors (line 5) | lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*...
method equals (line 5) | equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}
method fromArray (line 5) | fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w...
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3...
method fromBufferAttribute (line 5) | fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this...
method random (line 5) | random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math....
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}
class zn (line 5) | class zn extends ai{constructor(e,t,n={}){super(),this.isWebGLRenderTarg...
method constructor (line 5) | constructor(e,t,n={}){super(),this.isWebGLRenderTarget=!0,this.width=e...
method setSize (line 5) | setSize(e,t,n=1){(this.width!==e||this.height!==t||this.depth!==n)&&(t...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,thi...
method dispose (line 5) | dispose(){this.dispatchEvent({type:"dispose"})}
class Uo (line 5) | class Uo extends It{constructor(e=null,t=1,n=1,i=1){super(null),this.isD...
method constructor (line 5) | constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0...
class Kg (line 5) | class Kg extends zn{constructor(e,t,n){super(e,t),this.isWebGLArrayRende...
method constructor (line 5) | constructor(e,t,n){super(e,t),this.isWebGLArrayRenderTarget=!0,this.de...
class vl (line 5) | class vl extends It{constructor(e=null,t=1,n=1,i=1){super(null),this.isD...
method constructor (line 5) | constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,th...
class Jg (line 5) | class Jg extends zn{constructor(e,t,n){super(e,t),this.isWebGL3DRenderTa...
method constructor (line 5) | constructor(e,t,n){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth...
class $g (line 5) | class $g extends zn{constructor(e,t,n,i={}){super(e,t,i),this.isWebGLMul...
method constructor (line 5) | constructor(e,t,n,i={}){super(e,t,i),this.isWebGLMultipleRenderTargets...
method setSize (line 5) | setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){t...
method copy (line 5) | copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.de...
class Bt (line 5) | class Bt{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,thi...
method constructor (line 5) | constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,...
method slerpFlat (line 5) | static slerpFlat(e,t,n,i,s,r,o){let l=n[i+0],c=n[i+1],h=n[i+2],u=n[i+3...
method multiplyQuaternionsFlat (line 5) | static multiplyQuaternionsFlat(e,t,n,i,s,r){const o=n[i],l=n[i+1],c=n[...
method x (line 5) | get x(){return this._x}
method x (line 5) | set x(e){this._x=e,this._onChangeCallback()}
method y (line 5) | get y(){return this._y}
method y (line 5) | set y(e){this._y=e,this._onChangeCallback()}
method z (line 5) | get z(){return this._z}
method z (line 5) | set z(e){this._z=e,this._onChangeCallback()}
method w (line 5) | get w(){return this._w}
method w (line 5) | set w(e){this._w=e,this._onChangeCallback()}
method set (line 5) | set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onCh...
method clone (line 5) | clone(){return new this.constructor(this._x,this._y,this._z,this._w)}
method copy (line 5) | copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._o...
method setFromEuler (line 5) | setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion...
method setFromAxisAngle (line 5) | setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,t...
method setFromRotationMatrix (line 5) | setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],r=t[1...
method setFromUnitVectors (line 5) | setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,...
method angleTo (line 5) | angleTo(e){return 2*Math.acos(Math.abs(Vt(this.dot(e),-1,1)))}
method rotateTowards (line 5) | rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const ...
method identity (line 5) | identity(){return this.set(0,0,0,1)}
method invert (line 5) | invert(){return this.conjugate()}
method conjugate (line 5) | conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeC...
method dot (line 5) | dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}
method lengthSq (line 5) | lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this...
method length (line 5) | length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this...
method normalize (line 5) | normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this...
method multiply (line 5) | multiply(e){return this.multiplyQuaternions(this,e)}
method premultiply (line 5) | premultiply(e){return this.multiplyQuaternions(e,this)}
method multiplyQuaternions (line 5) | multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,r=e._w,o=t._x,l=t....
method slerp (line 5) | slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=t...
method slerpQuaternions (line 5) | slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}
method random (line 5) | random(){const e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),i=2*Mat...
method equals (line 5) | equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w=...
method fromArray (line 5) | fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],thi...
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[...
method fromBufferAttribute (line 5) | fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),th...
method _onChange (line 5) | _onChange(e){return this._onChangeCallback=e,this}
method _onChangeCallback (line 5) | _onChangeCallback(){}
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield thi...
class I (line 5) | class I{constructor(e=0,t=0,n=0){I.prototype.isVector3=!0,this.x=e,this....
method constructor (line 5) | constructor(e=0,t=0,n=0){I.prototype.isVector3=!0,this.x=e,this.y=t,th...
method set (line 5) | set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}
method setScalar (line 5) | setScalar(e){return this.x=e,this.y=e,this.z=e,this}
method setX (line 5) | setX(e){return this.x=e,this}
method setY (line 5) | setY(e){return this.y=e,this}
method setZ (line 5) | setZ(e){return this.z=e,this}
method setComponent (line 5) | setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;brea...
method getComponent (line 5) | getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;ca...
method clone (line 5) | clone(){return new this.constructor(this.x,this.y,this.z)}
method copy (line 5) | copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}
method add (line 5) | add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}
method addScalar (line 5) | addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}
method addVectors (line 5) | addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}
method addScaledVector (line 5) | addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,...
method sub (line 5) | sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}
method subScalar (line 5) | subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}
method subVectors (line 5) | subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}
method multiply (line 5) | multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}
method multiplyScalar (line 5) | multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}
method multiplyVectors (line 5) | multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t...
method applyEuler (line 5) | applyEuler(e){return this.applyQuaternion(bh.setFromEuler(e))}
method applyAxisAngle (line 5) | applyAxisAngle(e,t){return this.applyQuaternion(bh.setFromAxisAngle(e,...
method applyMatrix3 (line 5) | applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return t...
method applyNormalMatrix (line 5) | applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}
method applyMatrix4 (line 5) | applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,r=1/(s[3...
method applyQuaternion (line 5) | applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,r=e.y,o=e.z,...
method project (line 5) | project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4...
method unproject (line 5) | unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).apply...
method transformDirection (line 5) | transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;re...
method divide (line 5) | divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}
method divideScalar (line 5) | divideScalar(e){return this.multiplyScalar(1/e)}
method min (line 5) | min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),...
method max (line 5) | max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),...
method clamp (line 5) | clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Mat...
method clampScalar (line 5) | clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=M...
method clampLength (line 5) | clampLength(e,t){const n=this.length();return this.divideScalar(n||1)....
method floor (line 5) | floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),thi...
method ceil (line 5) | ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z...
method round (line 5) | round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),thi...
method roundToZero (line 5) | roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this...
method negate (line 5) | negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}
method dot (line 5) | dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}
method lengthSq (line 5) | lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}
method length (line 5) | length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}
method manhattanLength (line 5) | manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(th...
method normalize (line 5) | normalize(){return this.divideScalar(this.length()||1)}
method setLength (line 5) | setLength(e){return this.normalize().multiplyScalar(e)}
method lerp (line 5) | lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+...
method lerpVectors (line 5) | lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*...
method cross (line 5) | cross(e){return this.crossVectors(this,e)}
method crossVectors (line 5) | crossVectors(e,t){const n=e.x,i=e.y,s=e.z,r=t.x,o=t.y,l=t.z;return thi...
method projectOnVector (line 5) | projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0...
method projectOnPlane (line 5) | projectOnPlane(e){return Hl.copy(this).projectOnVector(e),this.sub(Hl)}
method reflect (line 5) | reflect(e){return this.sub(Hl.copy(e).multiplyScalar(2*this.dot(e)))}
method angleTo (line 5) | angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)re...
method distanceTo (line 5) | distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}
method distanceToSquared (line 5) | distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;retu...
method manhattanDistanceTo (line 5) | manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y...
method setFromSpherical (line 5) | setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,...
method setFromSphericalCoords (line 5) | setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Ma...
method setFromCylindrical (line 5) | setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e....
method setFromCylindricalCoords (line 5) | setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,t...
method setFromMatrixPosition (line 5) | setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y...
method setFromMatrixScale (line 5) | setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n...
method setFromMatrixColumn (line 5) | setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}
method setFromMatrix3Column (line 5) | setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}
method setFromEuler (line 5) | setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}
method equals (line 5) | equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}
method fromArray (line 5) | fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}
method fromBufferAttribute (line 5) | fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this...
method random (line 5) | random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math....
method randomDirection (line 5) | randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI...
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this.x,yield this.y,yield this.z}
class Li (line 5) | class Li{constructor(e=new I(1/0,1/0,1/0),t=new I(-1/0,-1/0,-1/0)){this....
method constructor (line 5) | constructor(e=new I(1/0,1/0,1/0),t=new I(-1/0,-1/0,-1/0)){this.isBox3=...
method set (line 5) | set(e,t){return this.min.copy(e),this.max.copy(t),this}
method setFromArray (line 5) | setFromArray(e){let t=1/0,n=1/0,i=1/0,s=-1/0,r=-1/0,o=-1/0;for(let l=0...
method setFromBufferAttribute (line 5) | setFromBufferAttribute(e){let t=1/0,n=1/0,i=1/0,s=-1/0,r=-1/0,o=-1/0;f...
method setFromPoints (line 5) | setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this....
method setFromCenterAndSize (line 5) | setFromCenterAndSize(e,t){const n=as.copy(t).multiplyScalar(.5);return...
method setFromObject (line 5) | setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}
method makeEmpty (line 5) | makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=thi...
method isEmpty (line 5) | isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.ma...
method getCenter (line 5) | getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,...
method getSize (line 5) | getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,th...
method expandByPoint (line 5) | expandByPoint(e){return this.min.min(e),this.max.max(e),this}
method expandByVector (line 5) | expandByVector(e){return this.min.sub(e),this.max.add(e),this}
method expandByScalar (line 5) | expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),...
method expandByObject (line 5) | expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;i...
method containsPoint (line 5) | containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min....
method containsBox (line 5) | containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.m...
method getParameter (line 5) | getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x...
method intersectsBox (line 5) | intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max...
method intersectsSphere (line 5) | intersectsSphere(e){return this.clampPoint(e.center,as),as.distanceToS...
method intersectsPlane (line 5) | intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min....
method intersectsTriangle (line 5) | intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(to),ra...
method clampPoint (line 5) | clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}
method distanceToPoint (line 5) | distanceToPoint(e){return as.copy(e).clamp(this.min,this.max).sub(e).l...
method getBoundingSphere (line 5) | getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.get...
method intersect (line 5) | intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmp...
method union (line 5) | union(e){return this.min.min(e.min),this.max.max(e.max),this}
method applyMatrix4 (line 5) | applyMatrix4(e){return this.isEmpty()?this:(ui[0].set(this.min.x,this....
method translate (line 5) | translate(e){return this.min.add(e),this.max.add(e),this}
method equals (line 5) | equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}
function ql (line 5) | function ql(a,e,t,n,i){for(let s=0,r=a.length-3;s<=r;s+=3){cs.fromArray(...
class is (line 5) | class is{constructor(e=new I,t=-1){this.center=e,this.radius=t}set(e,t){...
method constructor (line 5) | constructor(e=new I,t=-1){this.center=e,this.radius=t}
method set (line 5) | set(e,t){return this.center.copy(e),this.radius=t,this}
method setFromPoints (line 5) | setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Qg.setFrom...
method copy (line 5) | copy(e){return this.center.copy(e.center),this.radius=e.radius,this}
method isEmpty (line 5) | isEmpty(){return this.radius<0}
method makeEmpty (line 5) | makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}
method containsPoint (line 5) | containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*...
method distanceToPoint (line 5) | distanceToPoint(e){return e.distanceTo(this.center)-this.radius}
method intersectsSphere (line 5) | intersectsSphere(e){const t=this.radius+e.radius;return e.center.dista...
method intersectsBox (line 5) | intersectsBox(e){return e.intersectsSphere(this)}
method intersectsPlane (line 5) | intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=th...
method clampPoint (line 5) | clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy...
method getBoundingBox (line 5) | getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this....
method applyMatrix4 (line 5) | applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.ra...
method translate (line 5) | translate(e){return this.center.add(e),this}
method expandByPoint (line 5) | expandByPoint(e){Xl.subVectors(e,this.center);const t=Xl.lengthSq();if...
method union (line 5) | union(e){return this.center.equals(e.center)===!0?aa.set(0,0,1).multip...
method equals (line 5) | equals(e){return e.center.equals(this.center)&&e.radius===this.radius}
method clone (line 5) | clone(){return new this.constructor().copy(this)}
class Go (line 5) | class Go{constructor(e=new I,t=new I(0,0,-1)){this.origin=e,this.directi...
method constructor (line 5) | constructor(e=new I,t=new I(0,0,-1)){this.origin=e,this.direction=t}
method set (line 5) | set(e,t){return this.origin.copy(e),this.direction.copy(t),this}
method copy (line 5) | copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direct...
method at (line 5) | at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}
method lookAt (line 5) | lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),t...
method recast (line 5) | recast(e){return this.origin.copy(this.at(e,hi)),this}
method closestPointToPoint (line 5) | closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(thi...
method distanceToPoint (line 5) | distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}
method distanceSqToPoint (line 5) | distanceSqToPoint(e){const t=hi.subVectors(e,this.origin).dot(this.dir...
method distanceSqToSegment (line 5) | distanceSqToSegment(e,t,n,i){jl.copy(e).add(t).multiplyScalar(.5),la.c...
method intersectSphere (line 5) | intersectSphere(e,t){hi.subVectors(e.center,this.origin);const n=hi.do...
method intersectsSphere (line 5) | intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*...
method distanceToPlane (line 5) | distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)retur...
method intersectPlane (line 5) | intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?nu...
method intersectsPlane (line 5) | intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0...
method intersectBox (line 5) | intersectBox(e,t){let n,i,s,r,o,l;const c=1/this.direction.x,h=1/this....
method intersectsBox (line 5) | intersectsBox(e){return this.intersectBox(e,hi)!==null}
method intersectTriangle (line 5) | intersectTriangle(e,t,n,i,s){Yl.subVectors(t,e),ca.subVectors(n,e),Zl....
method applyMatrix4 (line 5) | applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.tran...
method equals (line 5) | equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
class Ne (line 5) | class Ne{constructor(){Ne.prototype.isMatrix4=!0,this.elements=[1,0,0,0,...
method constructor (line 5) | constructor(){Ne.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0...
method set (line 5) | set(e,t,n,i,s,r,o,l,c,h,u,f,d,p,m,g){const y=this.elements;return y[0]...
method identity (line 5) | identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}
method clone (line 5) | clone(){return new Ne().fromArray(this.elements)}
method copy (line 5) | copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],...
method copyPosition (line 5) | copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],...
method setFromMatrix3 (line 5) | setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,...
method extractBasis (line 5) | extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatr...
method makeBasis (line 5) | makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n...
method extractRotation (line 5) | extractRotation(e){const t=this.elements,n=e.elements,i=1/$s.setFromMa...
method makeRotationFromEuler (line 5) | makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,r=Mat...
method makeRotationFromQuaternion (line 5) | makeRotationFromQuaternion(e){return this.compose(e0,e,t0)}
method lookAt (line 5) | lookAt(e,t,n){const i=this.elements;return Sn.subVectors(e,t),Sn.lengt...
method multiply (line 5) | multiply(e){return this.multiplyMatrices(this,e)}
method premultiply (line 5) | premultiply(e){return this.multiplyMatrices(e,this)}
method multiplyMatrices (line 5) | multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,...
method multiplyScalar (line 5) | multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e...
method determinant (line 5) | determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],r=e[1...
method transpose (line 5) | transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t...
method setPosition (line 5) | setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x...
method invert (line 5) | invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],r=e[4],o=e[...
method scale (line 5) | scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=...
method getMaxScaleOnAxis (line 5) | getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e...
method makeTranslation (line 5) | makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1...
method makeRotationX (line 5) | makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0...
method makeRotationY (line 5) | makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0...
method makeRotationZ (line 5) | makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-...
method makeRotationAxis (line 5) | makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,r=e.x,o=...
method makeScale (line 5) | makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}
method makeShear (line 5) | makeShear(e,t,n,i,s,r){return this.set(1,n,s,0,e,1,r,0,t,i,1,0,0,0,0,1...
method compose (line 5) | compose(e,t,n){const i=this.elements,s=t._x,r=t._y,o=t._z,l=t._w,c=s+s...
method decompose (line 5) | decompose(e,t,n){const i=this.elements;let s=$s.set(i[0],i[1],i[2]).le...
method makePerspective (line 5) | makePerspective(e,t,n,i,s,r){const o=this.elements,l=2*s/(t-e),c=2*s/(...
method makeOrthographic (line 5) | makeOrthographic(e,t,n,i,s,r){const o=this.elements,l=1/(t-e),c=1/(n-i...
method equals (line 5) | equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t...
method fromArray (line 5) | fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return t...
method toArray (line 5) | toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e...
class Nn (line 5) | class Nn{constructor(e=0,t=0,n=0,i=Nn.DefaultOrder){this.isEuler=!0,this...
method constructor (line 5) | constructor(e=0,t=0,n=0,i=Nn.DefaultOrder){this.isEuler=!0,this._x=e,t...
method x (line 5) | get x(){return this._x}
method x (line 5) | set x(e){this._x=e,this._onChangeCallback()}
method y (line 5) | get y(){return this._y}
method y (line 5) | set y(e){this._y=e,this._onChangeCallback()}
method z (line 5) | get z(){return this._z}
method z (line 5) | set z(e){this._z=e,this._onChangeCallback()}
method order (line 5) | get order(){return this._order}
method order (line 5) | set order(e){this._order=e,this._onChangeCallback()}
method set (line 5) | set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._or...
method clone (line 5) | clone(){return new this.constructor(this._x,this._y,this._z,this._order)}
method copy (line 5) | copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._o...
method setFromRotationMatrix (line 5) | setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],...
method setFromQuaternion (line 5) | setFromQuaternion(e,t,n){return Mh.makeRotationFromQuaternion(e),this....
method setFromVector3 (line 5) | setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}
method reorder (line 5) | reorder(e){return Sh.setFromEuler(this),this.setFromQuaternion(Sh,e)}
method equals (line 5) | equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._or...
method fromArray (line 5) | fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void...
method toArray (line 5) | toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[...
method _onChange (line 5) | _onChange(e){return this._onChangeCallback=e,this}
method _onChangeCallback (line 5) | _onChangeCallback(){}
method toVector3 (line 5) | toVector3(){console.error("THREE.Euler: .toVector3() has been removed....
method [Symbol.iterator] (line 5) | *[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield thi...
class _l (line 5) | class _l{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(...
method constructor (line 5) | constructor(){this.mask=1}
method set (line 5) | set(e){this.mask=(1<<e|0)>>>0}
method enable (line 5) | enable(e){this.mask|=1<<e|0}
method enableAll (line 5) | enableAll(){this.mask=-1}
method toggle (line 5) | toggle(e){this.mask^=1<<e|0}
method disable (line 5) | disable(e){this.mask&=~(1<<e|0)}
method disableAll (line 5) | disableAll(){this.mask=0}
method test (line 5) | test(e){return(this.mask&e.mask)!==0}
method isEnabled (line 5) | isEnabled(e){return(this.mask&(1<<e|0))!==0}
class pt (line 5) | class pt extends ai{constructor(){super(),this.isObject3D=!0,Object.defi...
method constructor (line 5) | constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"i...
method onBeforeRender (line 5) | onBeforeRender(){}
method onAfterRender (line 5) | onAfterRender(){}
method applyMatrix4 (line 5) | applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix...
method applyQuaternion (line 5) | applyQuaternion(e){return this.quaternion.premultiply(e),this}
method setRotationFromAxisAngle (line 5) | setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}
method setRotationFromEuler (line 5) | setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}
method setRotationFromMatrix (line 5) | setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}
method setRotationFromQuaternion (line 5) | setRotationFromQuaternion(e){this.quaternion.copy(e)}
method rotateOnAxis (line 5) | rotateOnAxis(e,t){return Qs.setFromAxisAngle(e,t),this.quaternion.mult...
method rotateOnWorldAxis (line 5) | rotateOnWorldAxis(e,t){return Qs.setFromAxisAngle(e,t),this.quaternion...
method rotateX (line 5) | rotateX(e){return this.rotateOnAxis(Ah,e)}
method rotateY (line 5) | rotateY(e){return this.rotateOnAxis(Eh,e)}
method rotateZ (line 5) | rotateZ(e){return this.rotateOnAxis(Ch,e)}
method translateOnAxis (line 5) | translateOnAxis(e,t){return Th.copy(e).applyQuaternion(this.quaternion...
method translateX (line 5) | translateX(e){return this.translateOnAxis(Ah,e)}
method translateY (line 5) | translateY(e){return this.translateOnAxis(Eh,e)}
method translateZ (line 5) | translateZ(e){return this.translateOnAxis(Ch,e)}
method localToWorld (line 5) | localToWorld(e){return e.applyMatrix4(this.matrixWorld)}
method worldToLocal (line 5) | worldToLocal(e){return e.applyMatrix4(fi.copy(this.matrixWorld).invert...
method lookAt (line 5) | lookAt(e,t,n){e.isVector3?ha.copy(e):ha.set(e,t,n);const i=this.parent...
method add (line 5) | add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this....
method remove (line 5) | remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)th...
method removeFromParent (line 5) | removeFromParent(){const e=this.parent;return e!==null&&e.remove(this)...
method clear (line 5) | clear(){for(let e=0;e<this.children.length;e++){const t=this.children[...
method attach (line 5) | attach(e){return this.updateWorldMatrix(!0,!1),fi.copy(this.matrixWorl...
method getObjectById (line 5) | getObjectById(e){return this.getObjectByProperty("id",e)}
method getObjectByName (line 5) | getObjectByName(e){return this.getObjectByProperty("name",e)}
method getObjectByProperty (line 5) | getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this...
method getWorldPosition (line 5) | getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatr...
method getWorldQuaternion (line 5) | getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrix...
method getWorldScale (line 5) | getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld...
method getWorldDirection (line 5) | getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrix...
method raycast (line 5) | raycast(){}
method traverse (line 5) | traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n<i;n...
method traverseVisible (line 5) | traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.ch...
method traverseAncestors (line 5) | traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAnc...
method updateMatrix (line 5) | updateMatrix(){this.matrix.compose(this.position,this.quaternion,this....
method updateMatrixWorld (line 5) | updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this....
method updateWorldMatrix (line 5) | updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.upda...
method toJSON (line 5) | toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometrie...
method clone (line 5) | clone(e){return new this.constructor().copy(this,e)}
method copy (line 5) | copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy...
class Fn (line 5) | class Fn{constructor(e=new I,t=new I,n=new I){this.a=e,this.b=t,this.c=n...
method constructor (line 5) | constructor(e=new I,t=new I,n=new I){this.a=e,this.b=t,this.c=n}
method getNormal (line 5) | static getNormal(e,t,n,i){i.subVectors(n,t),qn.subVectors(e,t),i.cross...
method getBarycoord (line 5) | static getBarycoord(e,t,n,i,s){qn.subVectors(i,t),di.subVectors(n,t),K...
method containsPoint (line 5) | static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,pi),pi....
method getUV (line 5) | static getUV(e,t,n,i,s,r,o,l){return this.getBarycoord(e,t,n,i,pi),l.s...
method isFrontFacing (line 5) | static isFrontFacing(e,t,n,i){return qn.subVectors(n,t),di.subVectors(...
method set (line 5) | set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}
method setFromPointsAndIndices (line 5) | setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(...
method setFromAttributeAndIndices (line 5) | setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}
method getArea (line 5) | getArea(){return qn.subVectors(this.c,this.b),di.subVectors(this.a,thi...
method getMidpoint (line 5) | getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiply...
method getNormal (line 5) | getNormal(e){return Fn.getNormal(this.a,this.b,this.c,e)}
method getPlane (line 5) | getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}
method getBarycoord (line 5) | getBarycoord(e,t){return Fn.getBarycoord(e,this.a,this.b,this.c,t)}
method getUV (line 5) | getUV(e,t,n,i,s){return Fn.getUV(e,this.a,this.b,this.c,t,n,i,s)}
method containsPoint (line 5) | containsPoint(e){return Fn.containsPoint(e,this.a,this.b,this.c)}
method isFrontFacing (line 5) | isFrontFacing(e){return Fn.isFrontFacing(this.a,this.b,this.c,e)}
method intersectsBox (line 5) | intersectsBox(e){return e.intersectsTriangle(this)}
method closestPointToPoint (line 5) | closestPointToPoint(e,t){const n=this.a,i=this.b,s=this.c;let r,o;er.s...
method equals (line 5) | equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(th...
class Wt (line 5) | class Wt extends ai{constructor(){super(),this.isMaterial=!0,Object.defi...
method constructor (line 5) | constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"i...
method alphaTest (line 5) | get alphaTest(){return this._alphaTest}
method alphaTest (line 5) | set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTes...
method onBuild (line 5) | onBuild(){}
method onBeforeRender (line 5) | onBeforeRender(){}
method onBeforeCompile (line 5) | onBeforeCompile(){}
method customProgramCacheKey (line 5) | customProgramCacheKey(){return this.onBeforeCompile.toString()}
method setValues (line 5) | setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void ...
method toJSON (line 5) | toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},im...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,thi...
method dispose (line 5) | dispose(){this.dispatchEvent({type:"dispose"})}
method needsUpdate (line 5) | set needsUpdate(e){e===!0&&this.version++}
class ln (line 5) | class ln extends Wt{constructor(e){super(),this.isMeshBasicMaterial=!0,t...
method constructor (line 5) | constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasi...
method copy (line 5) | copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,t...
class mt (line 5) | class mt{constructor(e,t,n){if(Array.isArray(e))throw new TypeError("THR...
method constructor (line 5) | constructor(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.Buff...
method onUploadCallback (line 5) | onUploadCallback(){}
method needsUpdate (line 5) | set needsUpdate(e){e===!0&&this.version++}
method setUsage (line 5) | setUsage(e){return this.usage=e,this}
method copy (line 5) | copy(e){return this.name=e.name,this.array=new e.array.constructor(e.a...
method copyAt (line 5) | copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,s=this.itemSi...
method copyArray (line 5) | copyArray(e){return this.array.set(e),this}
method copyColorsArray (line 5) | copyColorsArray(e){const t=this.array;let n=0;for(let i=0,s=e.length;i...
method copyVector2sArray (line 5) | copyVector2sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length...
method copyVector3sArray (line 5) | copyVector3sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length...
method copyVector4sArray (line 5) | copyVector4sArray(e){const t=this.array;let n=0;for(let i=0,s=e.length...
method applyMatrix3 (line 5) | applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)...
method applyMatrix4 (line 5) | applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAttribut...
method applyNormalMatrix (line 5) | applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAtt...
method transformDirection (line 5) | transformDirection(e){for(let t=0,n=this.count;t<n;t++)Yt.fromBufferAt...
method set (line 5) | set(e,t=0){return this.array.set(e,t),this}
method getX (line 5) | getX(e){return this.array[e*this.itemSize]}
method setX (line 5) | setX(e,t){return this.array[e*this.itemSize]=t,this}
method getY (line 5) | getY(e){return this.array[e*this.itemSize+1]}
method setY (line 5) | setY(e,t){return this.array[e*this.itemSize+1]=t,this}
method getZ (line 5) | getZ(e){return this.array[e*this.itemSize+2]}
method setZ (line 5) | setZ(e,t){return this.array[e*this.itemSize+2]=t,this}
method getW (line 5) | getW(e){return this.array[e*this.itemSize+3]}
method setW (line 5) | setW(e,t){return this.array[e*this.itemSize+3]=t,this}
method setXY (line 5) | setXY(e,t,n){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]...
method setXYZ (line 5) | setXYZ(e,t,n,i){return e*=this.itemSize,this.array[e+0]=t,this.array[e...
method setXYZW (line 5) | setXYZW(e,t,n,i,s){return e*=this.itemSize,this.array[e+0]=t,this.arra...
method onUpload (line 5) | onUpload(e){return this.onUploadCallback=e,this}
method clone (line 5) | clone(){return new this.constructor(this.array,this.itemSize).copy(this)}
method toJSON (line 5) | toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.n...
class a0 (line 5) | class a0 extends mt{constructor(e,t,n){super(new Int8Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Int8Array(e),t,n)}
class l0 (line 5) | class l0 extends mt{constructor(e,t,n){super(new Uint8Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Uint8Array(e),t,n)}
class c0 (line 5) | class c0 extends mt{constructor(e,t,n){super(new Uint8ClampedArray(e),t,...
method constructor (line 5) | constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}
class u0 (line 5) | class u0 extends mt{constructor(e,t,n){super(new Int16Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Int16Array(e),t,n)}
class bl (line 5) | class bl extends mt{constructor(e,t,n){super(new Uint16Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Uint16Array(e),t,n)}
class h0 (line 5) | class h0 extends mt{constructor(e,t,n){super(new Int32Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Int32Array(e),t,n)}
class Iu (line 5) | class Iu extends mt{constructor(e,t,n){super(new Uint32Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Uint32Array(e),t,n)}
class f0 (line 5) | class f0 extends mt{constructor(e,t,n){super(new Uint16Array(e),t,n),thi...
method constructor (line 5) | constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferA...
class Ce (line 5) | class Ce extends mt{constructor(e,t,n){super(new Float32Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Float32Array(e),t,n)}
class d0 (line 5) | class d0 extends mt{constructor(e,t,n){super(new Float64Array(e),t,n)}}
method constructor (line 5) | constructor(e,t,n){super(new Float64Array(e),t,n)}
class Xe (line 5) | class Xe extends ai{constructor(){super(),this.isBufferGeometry=!0,Objec...
method constructor (line 5) | constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(t...
method getIndex (line 5) | getIndex(){return this.index}
method setIndex (line 5) | setIndex(e){return Array.isArray(e)?this.index=new(up(e)?Iu:bl)(e,1):t...
method getAttribute (line 5) | getAttribute(e){return this.attributes[e]}
method setAttribute (line 5) | setAttribute(e,t){return this.attributes[e]=t,this}
method deleteAttribute (line 5) | deleteAttribute(e){return delete this.attributes[e],this}
method hasAttribute (line 5) | hasAttribute(e){return this.attributes[e]!==void 0}
method addGroup (line 5) | addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}
method clearGroups (line 5) | clearGroups(){this.groups=[]}
method setDrawRange (line 5) | setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}
method applyMatrix4 (line 5) | applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyM...
method applyQuaternion (line 5) | applyQuaternion(e){return Ln.makeRotationFromQuaternion(e),this.applyM...
method rotateX (line 5) | rotateX(e){return Ln.makeRotationX(e),this.applyMatrix4(Ln),this}
method rotateY (line 5) | rotateY(e){return Ln.makeRotationY(e),this.applyMatrix4(Ln),this}
method rotateZ (line 5) | rotateZ(e){return Ln.makeRotationZ(e),this.applyMatrix4(Ln),this}
method translate (line 5) | translate(e,t,n){return Ln.makeTranslation(e,t,n),this.applyMatrix4(Ln...
method scale (line 5) | scale(e,t,n){return Ln.makeScale(e,t,n),this.applyMatrix4(Ln),this}
method lookAt (line 5) | lookAt(e){return ec.lookAt(e),ec.updateMatrix(),this.applyMatrix4(ec.m...
method center (line 5) | center(){return this.computeBoundingBox(),this.boundingBox.getCenter(n...
method setFromPoints (line 5) | setFromPoints(e){const t=[];for(let n=0,i=e.length;n<i;n++){const s=e[...
method computeBoundingBox (line 5) | computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Li...
method computeBoundingSphere (line 5) | computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphe...
method computeTangents (line 5) | computeTangents(){const e=this.index,t=this.attributes;if(e===null||t....
method computeVertexNormals (line 5) | computeVertexNormals(){const e=this.index,t=this.getAttribute("positio...
method merge (line 5) | merge(e,t){if(!(e&&e.isBufferGeometry)){console.error("THREE.BufferGeo...
method normalizeNormals (line 5) | normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.coun...
method toNonIndexed (line 5) | toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,u=o.normal...
method toJSON (line 5) | toJSON(){const e={metadata:{version:4.5,type:"BufferGeometry",generato...
method clone (line 5) | clone(){return new this.constructor().copy(this)}
method copy (line 5) | copy(e){this.index=null,this.attributes={},this.morphAttributes={},thi...
method dispose (line 5) | dispose(){this.dispatchEvent({type:"dispose"})}
class Rt (line 5) | class Rt extends pt{constructor(e=new Xe,t=new ln){super(),this.isMesh=!...
method constructor (line 5) | constructor(e=new Xe,t=new ln){super(),this.isMesh=!0,this.type="Mesh"...
method copy (line 5) | copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(th...
method updateMorphTargets (line 5) | updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.ke...
method raycast (line 5) | raycast(e,t){const n=this.geometry,i=this.material,s=this.matrixWorld;...
function m0 (line 5) | function m0(a,e,t,n,i,s,r,o){let l;if(e.side===kn?l=n.intersectTriangle(...
function _a (line 5) | function _a(a,e,t,n,i,s,r,o,l,c,h,u){ki.fromBufferAttribute(i,c),Oi.from...
class Si (line 5) | class Si extends Xe{constructor(e=1,t=1,n=1,i=1,s=1,r=1){super(),this.ty...
method constructor (line 5) | constructor(e=1,t=1,n=1,i=1,s=1,r=1){super(),this.type="BoxGeometry",t...
method fromJSON (line 5) | static fromJSON(e){return new Si(e.width,e.height,e.depth,e.widthSegme...
function Tr (line 5) | function Tr(a){const e={};for(const t in a){e[t]={};for(const n in a[t])...
function an (line 5) | function an(a){const e={};for(let t=0;t<a.length;t++){const n=Tr(a[t]);f...
function g0 (line 5) | function g0(a){const e=[];for(let t=0;t<a.length;t++)e.push(a[t].clone()...
class ni (line 9) | class ni extends Wt{constructor(e){super(),this.isShaderMaterial=!0,this...
method constructor (line 9) | constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMater...
method copy (line 9) | copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this...
method toJSON (line 9) | toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uni...
class wl (line 9) | class wl extends pt{constructor(){super(),this.isCamera=!0,this.type="Ca...
method constructor (line 9) | constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixW...
method copy (line 9) | copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrix...
method getWorldDirection (line 9) | getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrix...
method updateMatrixWorld (line 9) | updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInvers...
method updateWorldMatrix (line 9) | updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldIn...
method clone (line 9) | clone(){return new this.constructor().copy(this)}
class Ot (line 9) | class Ot extends wl{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPers...
method constructor (line 9) | constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,t...
method copy (line 9) | copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this....
method setFocalLength (line 9) | setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Eo*2*Math...
method getFocalLength (line 9) | getFocalLength(){const e=Math.tan(Es*.5*this.fov);return .5*this.getFi...
method getEffectiveFOV (line 9) | getEffectiveFOV(){return Eo*2*Math.atan(Math.tan(Es*.5*this.fov)/this....
method getFilmWidth (line 9) | getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}
method getFilmHeight (line 9) | getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}
method setViewOffset (line 9) | setViewOffset(e,t,n,i,s,r){this.aspect=e/t,this.view===null&&(this.vie...
method clearViewOffset (line 9) | clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.update...
method updateProjectionMatrix (line 9) | updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Es*.5*this...
method toJSON (line 9) | toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.objec...
class dp (line 9) | class dp extends pt{constructor(e,t,n){if(super(),this.type="CubeCamera"...
method constructor (line 9) | constructor(e,t,n){if(super(),this.type="CubeCamera",n.isWebGLCubeRend...
method update (line 9) | update(e,t){this.parent===null&&this.updateMatrixWorld();const n=this....
class Vo (line 9) | class Vo extends It{constructor(e,t,n,i,s,r,o,l,c,h){e=e!==void 0?e:[],t...
method constructor (line 9) | constructor(e,t,n,i,s,r,o,l,c,h){e=e!==void 0?e:[],t=t!==void 0?t:Yi,s...
method images (line 9) | get images(){return this.image}
method images (line 9) | set images(e){this.image=e}
class pp (line 9) | class pp extends zn{constructor(e,t={}){super(e,e,t),this.isWebGLCubeRen...
method constructor (line 9) | constructor(e,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const...
method fromEquirectangularTexture (line 9) | fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture....
method clear (line 44) | clear(e,t,n,i){const s=e.getRenderTarget();for(let r=0;r<6;r++)e.setRe...
class Vi (line 44) | class Vi{constructor(e=new I(1,0,0),t=0){this.isPlane=!0,this.normal=e,t...
method constructor (line 44) | constructor(e=new I(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.con...
method set (line 44) | set(e,t){return this.normal.copy(e),this.constant=t,this}
method setComponents (line 44) | setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,t...
method setFromNormalAndCoplanarPoint (line 44) | setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.con...
method setFromCoplanarPoints (line 44) | setFromCoplanarPoints(e,t,n){const i=oc.subVectors(n,t).cross(v0.subVe...
method copy (line 44) | copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}
method normalize (line 44) | normalize(){const e=1/this.normal.length();return this.normal.multiply...
method negate (line 44) | negate(){return this.constant*=-1,this.normal.negate(),this}
method distanceToPoint (line 44) | distanceToPoint(e){return this.normal.dot(e)+this.constant}
method distanceToSphere (line 44) | distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}
method projectPoint (line 44) | projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.dist...
method intersectLine (line 44) | intersectLine(e,t){const n=e.delta(oc),i=this.normal.dot(n);if(i===0)r...
method intersectsLine (line 44) | intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanc...
method intersectsBox (line 44) | intersectsBox(e){return e.intersectsPlane(this)}
method intersectsSphere (line 44) | intersectsSphere(e){return e.intersectsPlane(this)}
method coplanarPoint (line 44) | coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.const...
method applyMatrix4 (line 44) | applyMatrix4(e,t){const n=t||_0.getNormalMatrix(e),i=this.coplanarPoin...
method translate (line 44) | translate(e){return this.constant-=e.dot(this.normal),this}
method equals (line 44) | equals(e){return e.normal.equals(this.normal)&&e.constant===this.const...
method clone (line 44) | clone(){return new this.constructor().copy(this)}
class Ml (line 44) | class Ml{constructor(e=new Vi,t=new Vi,n=new Vi,i=new Vi,s=new Vi,r=new ...
method constructor (line 44) | constructor(e=new Vi,t=new Vi,n=new Vi,i=new Vi,s=new Vi,r=new Vi){thi...
method set (line 44) | set(e,t,n,i,s,r){const o=this.planes;return o[0].copy(e),o[1].copy(t),...
method copy (line 44) | copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n])...
method setFromProjectionMatrix (line 44) | setFromProjectionMatrix(e){const t=this.planes,n=e.elements,i=n[0],s=n...
method intersectsObject (line 44) | intersectsObject(e){const t=e.geometry;return t.boundingSphere===null&...
method intersectsSprite (line 44) | intersectsSprite(e){return or.center.set(0,0,0),or.radius=.70710678118...
method intersectsSphere (line 44) | intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let...
method intersectsBox (line 44) | intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const i=t[n]...
method containsPoint (line 44) | containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].dista...
method clone (line 44) | clone(){return new this.constructor().copy(this)}
function mp (line 44) | function mp(){let a=null,e=!1,t=null,n=null;function i(s,r){t(s,r),n=a.r...
function b0 (line 44) | function b0(a,e){const t=e.isWebGL2,n=new WeakMap;function i(c,h){const ...
class Ps (line 44) | class Ps extends Xe{constructor(e=1,t=1,n=1,i=1){super(),this.type="Plan...
method constructor (line 44) | constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.pa...
method fromJSON (line 44) | static fromJSON(e){return new Ps(e.width,e.height,e.widthSegments,e.he...
function Jx (line 2933) | function Jx(a,e,t,n,i,s){const r=new we(0);let o=i===!0?0:1,l,c,h=null,u...
function $x (line 2933) | function $x(a,e,t,n){const i=a.getParameter(34921),s=n.isWebGL2?null:e.g...
function Qx (line 2933) | function Qx(a,e,t,n){const i=n.isWebGL2;let s;function r(c){s=c}function...
function ev (line 2933) | function ev(a,e,t){let n;function i(){if(n!==void 0)return n;if(e.has("E...
function tv (line 2933) | function tv(a){const e=this;let t=null,n=0,i=!1,s=!1;const r=new Vi,o=ne...
function nv (line 2933) | function nv(a){let e=new WeakMap;function t(r,o){return o===br?r.mapping...
class Us (line 2933) | class Us extends wl{constructor(e=-1,t=1,n=1,i=-1,s=.1,r=2e3){super(),th...
method constructor (line 2933) | constructor(e=-1,t=1,n=1,i=-1,s=.1,r=2e3){super(),this.isOrthographicC...
method copy (line 2933) | copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,t...
method setViewOffset (line 2933) | setViewOffset(e,t,n,i,s,r){this.view===null&&(this.view={enabled:!0,fu...
method clearViewOffset (line 2933) | clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.update...
method updateProjectionMatrix (line 2933) | updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),...
method toJSON (line 2933) | toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.obj...
class iu (line 2933) | class iu{constructor(e){this._renderer=e,this._pingPongRenderTarget=null...
method constructor (line 2933) | constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._...
method fromScene (line 2933) | fromScene(e,t=0,n=.1,i=100){lc=this._renderer.getRenderTarget(),this._...
method fromEquirectangular (line 2933) | fromEquirectangular(e,t=null){return this._fromTexture(e,t)}
method fromCubemap (line 2933) | fromCubemap(e,t=null){return this._fromTexture(e,t)}
method compileCubemapShader (line 2933) | compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMat...
method compileEquirectangularShader (line 2933) | compileEquirectangularShader(){this._equirectMaterial===null&&(this._e...
method dispose (line 2933) | dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapM...
method _setSize (line 2933) | _setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math....
method _dispose (line 2933) | _dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),thi...
method _cleanup (line 2933) | _cleanup(e){this._renderer.setRenderTarget(lc),e.scissorTest=!1,wa(e,0...
method _fromTexture (line 2933) | _fromTexture(e,t){e.mapping===Yi||e.mapping===Zi?this._setSize(e.image...
method _allocateTargets (line 2933) | _allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cu...
method _compileMaterial (line 2933) | _compileMaterial(e){const t=new Rt(this._lodPlanes[0],e);this._rendere...
method _sceneToCubeUV (line 2933) | _sceneToCubeUV(e,t,n,i){const o=new Ot(90,1,t,n),l=[1,-1,1,1,1,1],c=[1...
method _textureToCubeUV (line 2933) | _textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===Yi||e.mappi...
method _applyPMREM (line 2933) | _applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for...
method _blur (line 2933) | _blur(e,t,n,i,s){const r=this._pingPongRenderTarget;this._halfBlur(e,r...
method _halfBlur (line 2933) | _halfBlur(e,t,n,i,s,r,o){const l=this._renderer,c=this._blurMaterial;r...
function iv (line 2933) | function iv(a){const e=[],t=[],n=[];let i=a;const s=a-yr+1+Ph.length;for...
function Nh (line 2933) | function Nh(a,e,t){const n=new zn(a,e,t);return n.texture.mapping=Gr,n.t...
function wa (line 2933) | function wa(a,e,t,n,i){a.viewport.set(e,t,n,i),a.scissor.set(e,t,n,i)}
function sv (line 2933) | function sv(a,e,t){const n=new Float32Array(_s),i=new I(0,1,0);return ne...
function kh (line 2993) | function kh(){return new ni({name:"EquirectangularToCubeUV",uniforms:{en...
function Oh (line 3012) | function Oh(){return new ni({name:"CubemapToCubeUV",uniforms:{envMap:{va...
function Pu (line 3028) | function Pu(){return`
function rv (line 3083) | function rv(a){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture)...
function ov (line 3083) | function ov(a){const e={};function t(n){if(e[n]!==void 0)return e[n];let...
function av (line 3083) | function av(a,e,t,n){const i={},s=new WeakMap;function r(u){const f=u.ta...
function lv (line 3083) | function lv(a,e,t,n){const i=n.isWebGL2;let s;function r(f){s=f}let o,l;...
function cv (line 3083) | function cv(a){const e={geometries:0,textures:0},t={frame:0,calls:0,tria...
function uv (line 3083) | function uv(a,e){return a[0]-e[0]}
function hv (line 3083) | function hv(a,e){return Math.abs(e[1])-Math.abs(a[1])}
function cc (line 3083) | function cc(a,e){let t=1;const n=e.isInterleavedBufferAttribute?e.data.a...
function fv (line 3083) | function fv(a,e,t){const n={},i=new Float32Array(8),s=new WeakMap,r=new ...
function dv (line 3083) | function dv(a,e,t,n){let i=new WeakMap;function s(l){const c=n.render.fr...
function Vr (line 3083) | function Vr(a,e,t){const n=a[0];if(n<=0||n>0)return a;const i=e*t;let s=...
function mn (line 3083) | function mn(a,e){if(a.length!==e.length)return!1;for(let t=0,n=a.length;...
function gn (line 3083) | function gn(a,e){for(let t=0,n=e.length;t<n;t++)a[t]=e[t]}
function Sl (line 3083) | function Sl(a,e){let t=zh[e];t===void 0&&(t=new Int32Array(e),zh[e]=t);f...
function pv (line 3083) | function pv(a,e){const t=this.cache;t[0]!==e&&(a.uniform1f(this.addr,e),...
function mv (line 3083) | function mv(a,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==...
function gv (line 3083) | function gv(a,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==...
function yv (line 3083) | function yv(a,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==...
function xv (line 3083) | function xv(a,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,...
function vv (line 3083) | function vv(a,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,...
function _v (line 3083) | function _v(a,e){const t=this.cache,n=e.elements;if(n===void 0){if(mn(t,...
function bv (line 3083) | function bv(a,e){const t=this.cache;t[0]!==e&&(a.uniform1i(this.addr,e),...
function wv (line 3083) | function wv(a,e){const t=this.cache;mn(t,e)||(a.uniform2iv(this.addr,e),...
function Mv (line 3083) | function Mv(a,e){const t=this.cache;mn(t,e)||(a.uniform3iv(this.addr,e),...
function Sv (line 3083) | function Sv(a,e){const t=this.cache;mn(t,e)||(a.uniform4iv(this.addr,e),...
function Tv (line 3083) | function Tv(a,e){const t=this.cache;t[0]!==e&&(a.uniform1ui(this.addr,e)...
function Av (line 3083) | function Av(a,e){const t=this.cache;mn(t,e)||(a.uniform2uiv(this.addr,e)...
function Ev (line 3083) | function Ev(a,e){const t=this.cache;mn(t,e)||(a.uniform3uiv(this.addr,e)...
function Cv (line 3083) | function Cv(a,e){const t=this.cache;mn(t,e)||(a.uniform4uiv(this.addr,e)...
function Lv (line 3083) | function Lv(a,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i...
function Rv (line 3083) | function Rv(a,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i...
function Iv (line 3083) | function Iv(a,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i...
function Pv (line 3083) | function Pv(a,e,t){const n=this.cache,i=t.allocateTextureUnit();n[0]!==i...
function Dv (line 3083) | function Dv(a){switch(a){case 5126:return pv;case 35664:return mv;case 3...
function Fv (line 3083) | function Fv(a,e){a.uniform1fv(this.addr,e)}
function Nv (line 3083) | function Nv(a,e){const t=Vr(e,this.size,2);a.uniform2fv(this.addr,t)}
function kv (line 3083) | function kv(a,e){const t=Vr(e,this.size,3);a.uniform3fv(this.addr,t)}
function Ov (line 3083) | function Ov(a,e){const t=Vr(e,this.size,4);a.uniform4fv(this.addr,t)}
function Bv (line 3083) | function Bv(a,e){const t=Vr(e,this.size,4);a.uniformMatrix2fv(this.addr,...
function zv (line 3083) | function zv(a,e){const t=Vr(e,this.size,9);a.uniformMatrix3fv(this.addr,...
function Uv (line 3083) | function Uv(a,e){const t=Vr(e,this.size,16);a.uniformMatrix4fv(this.addr...
function Gv (line 3083) | function Gv(a,e){a.uniform1iv(this.addr,e)}
function Vv (line 3083) | function Vv(a,e){a.uniform2iv(this.addr,e)}
function Hv (line 3083) | function Hv(a,e){a.uniform3iv(this.addr,e)}
function Wv (line 3083) | function Wv(a,e){a.uniform4iv(this.addr,e)}
function qv (line 3083) | function qv(a,e){a.uniform1uiv(this.addr,e)}
function Xv (line 3083) | function Xv(a,e){a.uniform2uiv(this.addr,e)}
function jv (line 3083) | function jv(a,e){a.uniform3uiv(this.addr,e)}
function Yv (line 3083) | function Yv(a,e){a.uniform4uiv(this.addr,e)}
function Zv (line 3083) | function Zv(a,e,t){const n=e.length,i=Sl(t,n);a.uniform1iv(this.addr,i);...
function Kv (line 3083) | function Kv(a,e,t){const n=e.length,i=Sl(t,n);a.uniform1iv(this.addr,i);...
function Jv (line 3083) | function Jv(a,e,t){const n=e.length,i=Sl(t,n);a.uniform1iv(this.addr,i);...
function $v (line 3083) | function $v(a,e,t){const n=e.length,i=Sl(t,n);a.uniform1iv(this.addr,i);...
function Qv (line 3083) | function Qv(a){switch(a){case 5126:return Fv;case 35664:return Nv;case 3...
class e_ (line 3083) | class e_{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.set...
method constructor (line 3083) | constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.setValue=D...
class t_ (line 3083) | class t_{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.siz...
method constructor (line 3083) | constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.size=t.siz...
class n_ (line 3083) | class n_{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n...
method constructor (line 3083) | constructor(e){this.id=e,this.seq=[],this.map={}}
method setValue (line 3083) | setValue(e,t,n){const i=this.seq;for(let s=0,r=i.length;s!==r;++s){con...
function Hh (line 3083) | function Hh(a,e){a.seq.push(e),a.map[e.id]=e}
function i_ (line 3083) | function i_(a,e,t){const n=a.name,i=n.length;for(uc.lastIndex=0;;){const...
class $a (line 3083) | class $a{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramPa...
method constructor (line 3083) | constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter...
method setValue (line 3083) | setValue(e,t,n,i){const s=this.map[t];s!==void 0&&s.setValue(e,n,i)}
method setOptional (line 3083) | setOptional(e,t,n){const i=t[n];i!==void 0&&this.setValue(e,n,i)}
method upload (line 3083) | static upload(e,t,n,i){for(let s=0,r=t.length;s!==r;++s){const o=t[s],...
method seqWithValue (line 3083) | static seqWithValue(e,t){const n=[];for(let i=0,s=e.length;i!==s;++i){...
function Wh (line 3083) | function Wh(a,e,t){const n=a.createShader(e);return a.shaderSource(n,t),...
function r_ (line 3083) | function r_(a,e){const t=a.split(`
function o_ (line 3085) | function o_(a){switch(a){case Mi:return["Linear","( value )"];case it:re...
function qh (line 3085) | function qh(a,e,t){const n=a.getShaderParameter(e,35713),i=a.getShaderIn...
function a_ (line 3089) | function a_(a,e){const t=o_(e);return"vec4 "+a+"( vec4 value ) { return ...
function l_ (line 3089) | function l_(a,e){let t;switch(e){case kd:t="Linear";break;case Od:t="Rei...
function c_ (line 3089) | function c_(a){return[a.extensionDerivatives||!!a.envMapCubeUVHeight||a....
function u_ (line 3090) | function u_(a){const e=[];for(const t in a){const n=a[t];n!==!1&&e.push(...
function h_ (line 3091) | function h_(a,e){const t={},n=a.getProgramParameter(e,35721);for(let i=0...
function ho (line 3091) | function ho(a){return a!==""}
function Xh (line 3091) | function Xh(a,e){return a.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).repl...
function jh (line 3091) | function jh(a,e){return a.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPl...
function su (line 3091) | function su(a){return a.replace(f_,d_)}
function d_ (line 3091) | function d_(a,e){const t=st[e];if(t===void 0)throw new Error("Can not re...
function Yh (line 3091) | function Yh(a){return a.replace(m_,_p).replace(p_,g_)}
function g_ (line 3091) | function g_(a,e,t,n){return console.warn("WebGLProgram: #pragma unroll_l...
function _p (line 3091) | function _p(a,e,t,n){let i="";for(let s=parseInt(e);s<parseInt(t);s++)i+...
function Zh (line 3091) | function Zh(a){let e="precision "+a.precision+` float;
function y_ (line 3095) | function y_(a){let e="SHADOWMAP_TYPE_BASIC";return a.shadowMapType===wu?...
function x_ (line 3095) | function x_(a){let e="ENVMAP_TYPE_CUBE";if(a.envMap)switch(a.envMapMode)...
function v_ (line 3095) | function v_(a){let e="ENVMAP_MODE_REFLECTION";if(a.envMap)switch(a.envMa...
function __ (line 3095) | function __(a){let e="ENVMAP_BLENDING_NONE";if(a.envMap)switch(a.combine...
function b_ (line 3095) | function b_(a){const e=a.envMapCubeUVHeight;if(e===null)return null;cons...
function w_ (line 3095) | function w_(a,e,t,n){const i=a.getContext(),s=t.defines;let r=t.vertexSh...
class S_ (line 3113) | class S_{constructor(){this.shaderCache=new Map,this.materialCache=new M...
method constructor (line 3113) | constructor(){this.shaderCache=new Map,this.materialCache=new Map}
method update (line 3113) | update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderS...
method remove (line 3113) | remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTim...
method getVertexShaderID (line 3113) | getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}
method getFragmentShaderID (line 3113) | getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}
method dispose (line 3113) | dispose(){this.shaderCache.clear(),this.materialCache.clear()}
method _getShaderCacheForMaterial (line 3113) | _getShaderCacheForMaterial(e){const t=this.materialCache;return t.has(...
method _getShaderStage (line 3113) | _getShaderStage(e){const t=this.shaderCache;if(t.has(e)===!1){const n=...
class T_ (line 3113) | class T_{constructor(e){this.id=M_++,this.code=e,this.usedTimes=0}}
method constructor (line 3113) | constructor(e){this.id=M_++,this.code=e,this.usedTimes=0}
function A_ (line 3113) | function A_(a,e,t,n,i,s,r){const o=new _l,l=new S_,c=[],h=i.isWebGL2,u=i...
function E_ (line 3113) | function E_(){let a=new WeakMap;function e(s){let r=a.get(s);return r===...
function C_ (line 3113) | function C_(a,e){return a.groupOrder!==e.groupOrder?a.groupOrder-e.group...
function Kh (line 3113) | function Kh(a,e){return a.groupOrder!==e.groupOrder?a.groupOrder-e.group...
function Jh (line 3113) | function Jh(){const a=[];let e=0;const t=[],n=[],i=[];function s(){e=0,t...
function L_ (line 3113) | function L_(){let a=new WeakMap;function e(n,i){let s;return a.has(n)===...
function R_ (line 3113) | function R_(){const a={};return{get:function(e){if(a[e.id]!==void 0)retu...
function I_ (line 3113) | function I_(){const a={};return{get:function(e){if(a[e.id]!==void 0)retu...
function D_ (line 3113) | function D_(a,e){return(e.castShadow?1:0)-(a.castShadow?1:0)}
function F_ (line 3113) | function F_(a,e){const t=new R_,n=I_(),i={version:0,hash:{directionalLen...
function $h (line 3113) | function $h(a,e){const t=new F_(a,e),n=[],i=[];function s(){n.length=0,i...
function N_ (line 3113) | function N_(a,e){let t=new WeakMap;function n(s,r=0){let o;return t.has(...
class Du (line 3113) | class Du extends Wt{constructor(e){super(),this.isMeshDepthMaterial=!0,t...
method constructor (line 3113) | constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDept...
method copy (line 3113) | copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map...
class Fu (line 3113) | class Fu extends Wt{constructor(e){super(),this.isMeshDistanceMaterial=!...
method constructor (line 3113) | constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshD...
method copy (line 3113) | copy(e){return super.copy(e),this.referencePosition.copy(e.referencePo...
function B_ (line 3141) | function B_(a,e,t){let n=new Ml;const i=new fe,s=new fe,r=new dt,o=new D...
function z_ (line 3141) | function z_(a,e,t){const n=t.isWebGL2;function i(){let z=!1;const ye=new...
function U_ (line 3141) | function U_(a,e,t,n,i,s,r){const o=i.isWebGL2,l=i.maxTextures,c=i.maxCub...
function bp (line 3141) | function bp(a,e,t){const n=t.isWebGL2;function i(s,r=null){let o;if(s===...
class wp (line 3141) | class wp extends Ot{constructor(e=[]){super(),this.isArrayCamera=!0,this...
method constructor (line 3141) | constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}
class pn (line 3141) | class pn extends pt{constructor(){super(),this.isGroup=!0,this.type="Gro...
method constructor (line 3141) | constructor(){super(),this.isGroup=!0,this.type="Group"}
class hc (line 3141) | class hc{constructor(){this._targetRay=null,this._grip=null,this._hand=n...
method constructor (line 3141) | constructor(){this._targetRay=null,this._grip=null,this._hand=null}
method getHandSpace (line 3141) | getHandSpace(){return this._hand===null&&(this._hand=new pn,this._hand...
method getTargetRaySpace (line 3141) | getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=ne...
method getGripSpace (line 3141) | getGripSpace(){return this._grip===null&&(this._grip=new pn,this._grip...
method dispatchEvent (line 3141) | dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispat...
method disconnect (line 3141) | disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),...
method update (line 3141) | update(e,t,n){let i=null,s=null,r=null;const o=this._targetRay,l=this....
class Mp (line 3141) | class Mp extends It{constructor(e,t,n,i,s,r,o,l,c,h){if(h=h!==void 0?h:X...
method constructor (line 3141) | constructor(e,t,n,i,s,r,o,l,c,h){if(h=h!==void 0?h:Xi,h!==Xi&&h!==Rs)t...
class V_ (line 3141) | class V_ extends ai{constructor(e,t){super();const n=this;let i=null,s=1...
method constructor (line 3141) | constructor(e,t){super();const n=this;let i=null,s=1,r=null,o="local-f...
function H_ (line 3141) | function H_(a,e){function t(m,g){m.fogColor.value.copy(g.color),g.isFog?...
function W_ (line 3141) | function W_(a,e,t,n){let i={},s={},r=[];const o=t.isWebGL2?a.getParamete...
function q_ (line 3141) | function q_(){const a=Co("canvas");return a.style.display="block",a}
function Nu (line 3141) | function Nu(a={}){this.isWebGLRenderer=!0;const e=a.canvas!==void 0?a.ca...
class Sp (line 3141) | class Sp extends Nu{}
class Tl (line 3141) | class Tl{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.colo...
method constructor (line 3141) | constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new w...
method clone (line 3141) | clone(){return new Tl(this.color,this.density)}
method toJSON (line 3141) | toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this....
class Al (line 3141) | class Al{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=...
method constructor (line 3141) | constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new we(...
method clone (line 3141) | clone(){return new Al(this.color,this.near,this.far)}
method toJSON (line 3141) | toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,fa...
class El (line 3141) | class El extends pt{constructor(){super(),this.isScene=!0,this.type="Sce...
method constructor (line 3141) | constructor(){super(),this.isScene=!0,this.type="Scene",this.backgroun...
method copy (line 3141) | copy(e,t){return super.copy(e,t),e.background!==null&&(this.background...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fo...
class Ho (line 3141) | class Ho{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this....
method constructor (line 3141) | constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=...
method onUploadCallback (line 3141) | onUploadCallback(){}
method needsUpdate (line 3141) | set needsUpdate(e){e===!0&&this.version++}
method setUsage (line 3141) | setUsage(e){return this.usage=e,this}
method copy (line 3141) | copy(e){return this.array=new e.array.constructor(e.array),this.count=...
method copyAt (line 3141) | copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,s=this.stride;i<s...
method set (line 3141) | set(e,t=0){return this.array.set(e,t),this}
method clone (line 3141) | clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffe...
method onUpload (line 3141) | onUpload(e){return this.onUploadCallback=e,this}
method toJSON (line 3141) | toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.arr...
class Ji (line 3141) | class Ji{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,th...
method constructor (line 3141) | constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name...
method count (line 3141) | get count(){return this.data.count}
method array (line 3141) | get array(){return this.data.array}
method needsUpdate (line 3141) | set needsUpdate(e){this.data.needsUpdate=e}
method applyMatrix4 (line 3141) | applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)un.fromBufferAtt...
method applyNormalMatrix (line 3141) | applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)un.fromBufferAtt...
method transformDirection (line 3141) | transformDirection(e){for(let t=0,n=this.count;t<n;t++)un.fromBufferAt...
method setX (line 3141) | setX(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this}
method setY (line 3141) | setY(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,t...
method setZ (line 3141) | setZ(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,t...
method setW (line 3141) | setW(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,t...
method getX (line 3141) | getX(e){return this.data.array[e*this.data.stride+this.offset]}
method getY (line 3141) | getY(e){return this.data.array[e*this.data.stride+this.offset+1]}
method getZ (line 3141) | getZ(e){return this.data.array[e*this.data.stride+this.offset+2]}
method getW (line 3141) | getW(e){return this.data.array[e*this.data.stride+this.offset+3]}
method setXY (line 3141) | setXY(e,t,n){return e=e*this.data.stride+this.offset,this.data.array[e...
method setXYZ (line 3141) | setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.data.arra...
method setXYZW (line 3141) | setXYZW(e,t,n,i,s){return e=e*this.data.stride+this.offset,this.data.a...
method clone (line 3141) | clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute....
method toJSON (line 3141) | toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute...
class Cl (line 3141) | class Cl extends Wt{constructor(e){super(),this.isSpriteMaterial=!0,this...
method constructor (line 3141) | constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMater...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,t...
class yo (line 3141) | class yo extends pt{constructor(e){if(super(),this.isSprite=!0,this.type...
method constructor (line 3141) | constructor(e){if(super(),this.isSprite=!0,this.type="Sprite",lr===voi...
method raycast (line 3141) | raycast(e,t){e.camera===null&&console.error('THREE.Sprite: "Raycaster....
method copy (line 3141) | copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e...
function Ta (line 3141) | function Ta(a,e,t,n,i,s){hr.subVectors(a,t).addScalar(.5).multiply(n),i!...
class Ap (line 3141) | class Ap extends pt{constructor(){super(),this._currentLevel=0,this.type...
method constructor (line 3141) | constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defi...
method copy (line 3141) | copy(e){super.copy(e,!1);const t=e.levels;for(let n=0,i=t.length;n<i;n...
method addLevel (line 3141) | addLevel(e,t=0){t=Math.abs(t);const n=this.levels;let i;for(i=0;i<n.le...
method getCurrentLevel (line 3141) | getCurrentLevel(){return this._currentLevel}
method getObjectForDistance (line 3141) | getObjectForDistance(e){const t=this.levels;if(t.length>0){let n,i;for...
method raycast (line 3141) | raycast(e,t){if(this.levels.length>0){Aa.setFromMatrixPosition(this.ma...
method update (line 3141) | update(e){const t=this.levels;if(t.length>1){Aa.setFromMatrixPosition(...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);this.autoUpdate===!1&&(t.object.auto...
class Wo (line 3141) | class Wo extends Rt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,th...
method constructor (line 3141) | constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMe...
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMat...
method bind (line 3141) | bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this...
method pose (line 3141) | pose(){this.skeleton.pose()}
method normalizeSkinWeights (line 3141) | normalizeSkinWeights(){const e=new dt,t=this.geometry.attributes.skinW...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attac...
method boneTransform (line 3141) | boneTransform(e,t){const n=this.skeleton,i=this.geometry;sf.fromBuffer...
class Ds (line 3141) | class Ds extends pt{constructor(){super(),this.isBone=!0,this.type="Bone"}}
method constructor (line 3141) | constructor(){super(),this.isBone=!0,this.type="Bone"}
class vr (line 3141) | class vr extends It{constructor(e=null,t=1,n=1,i,s,r,o,l,c=Gt,h=Gt,u,f){...
method constructor (line 3141) | constructor(e=null,t=1,n=1,i,s,r,o,l,c=Gt,h=Gt,u,f){super(null,r,o,l,c...
class Gs (line 3141) | class Gs{constructor(e=[],t=[]){this.uuid=En(),this.bones=e.slice(0),thi...
method constructor (line 3141) | constructor(e=[],t=[]){this.uuid=En(),this.bones=e.slice(0),this.boneI...
method init (line 3141) | init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new...
method calculateInverses (line 3141) | calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bone...
method pose (line 3141) | pose(){for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];...
method update (line 3141) | update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=...
method clone (line 3141) | clone(){return new Gs(this.bones,this.boneInverses)}
method computeBoneTexture (line 3141) | computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=cp(e),e=Ma...
method getBoneByName (line 3141) | getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const i=this...
method dispose (line 3141) | dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.bo...
method fromJSON (line 3141) | fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n<i;n++){c...
method toJSON (line 3141) | toJSON(){const e={metadata:{version:4.5,type:"Skeleton",generator:"Ske...
class Ar (line 3141) | class Ar extends mt{constructor(e,t,n,i=1){typeof n=="number"&&(i=n,n=!1...
method constructor (line 3141) | constructor(e,t,n,i=1){typeof n=="number"&&(i=n,n=!1,console.error("TH...
method copy (line 3141) | copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPer...
class Ep (line 3141) | class Ep extends Rt{constructor(e,t,n){super(e,t),this.isInstancedMesh=!...
method constructor (line 3141) | constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMat...
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMa...
method getColorAt (line 3141) | getColorAt(e,t){t.fromArray(this.instanceColor.array,e*3)}
method getMatrixAt (line 3141) | getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,e*16)}
method raycast (line 3141) | raycast(e,t){const n=this.matrixWorld,i=this.count;if(ao.geometry=this...
method setColorAt (line 3141) | setColorAt(e,t){this.instanceColor===null&&(this.instanceColor=new Ar(...
method setMatrixAt (line 3141) | setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,e*16)}
method updateMorphTargets (line 3141) | updateMorphTargets(){}
method dispose (line 3141) | dispose(){this.dispatchEvent({type:"dispose"})}
class qt (line 3141) | class qt extends Wt{constructor(e){super(),this.isLineBasicMaterial=!0,t...
method constructor (line 3141) | constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasi...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e...
class jn (line 3141) | class jn extends pt{constructor(e=new Xe,t=new qt){super(),this.isLine=!...
method constructor (line 3141) | constructor(e=new Xe,t=new qt){super(),this.isLine=!0,this.type="Line"...
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.material=e.material,this.geometr...
method computeLineDistances (line 3141) | computeLineDistances(){const e=this.geometry;if(e.index===null){const ...
method raycast (line 3141) | raycast(e,t){const n=this.geometry,i=this.matrixWorld,s=e.params.Line....
method updateMorphTargets (line 3141) | updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.ke...
class wn (line 3141) | class wn extends jn{constructor(e,t){super(e,t),this.isLineSegments=!0,t...
method constructor (line 3141) | constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegm...
method computeLineDistances (line 3141) | computeLineDistances(){const e=this.geometry;if(e.index===null){const ...
class ku (line 3141) | class ku extends jn{constructor(e,t){super(e,t),this.isLineLoop=!0,this....
method constructor (line 3141) | constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}
class qi (line 3141) | class qi extends Wt{constructor(e){super(),this.isPointsMaterial=!0,this...
method constructor (line 3141) | constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMater...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,t...
class _r (line 3141) | class _r extends pt{constructor(e=new Xe,t=new qi){super(),this.isPoints...
method constructor (line 3141) | constructor(e=new Xe,t=new qi){super(),this.isPoints=!0,this.type="Poi...
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.material=e.material,this.geometr...
method raycast (line 3141) | raycast(e,t){const n=this.geometry,i=this.matrixWorld,s=e.params.Point...
method updateMorphTargets (line 3141) | updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.ke...
function gf (line 3141) | function gf(a,e,t,n,i,s,r){const o=ru.distanceSqToPoint(a);if(o<t){const...
class Y_ (line 3141) | class Y_ extends It{constructor(e,t,n,i,s,r,o,l,c){super(e,t,n,i,s,r,o,l...
method constructor (line 3141) | constructor(e,t,n,i,s,r,o,l,c){super(e,t,n,i,s,r,o,l,c),this.isVideoTe...
method clone (line 3141) | clone(){return new this.constructor(this.image).copy(this)}
method update (line 3141) | update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.re...
class Z_ (line 3141) | class Z_ extends It{constructor(e,t,n){super({width:e,height:t}),this.is...
method constructor (line 3141) | constructor(e,t,n){super({width:e,height:t}),this.isFramebufferTexture...
class Cp (line 3141) | class Cp extends It{constructor(e,t,n,i,s,r,o,l,c,h,u,f){super(null,r,o,...
method constructor (line 3141) | constructor(e,t,n,i,s,r,o,l,c,h,u,f){super(null,r,o,l,c,h,i,s,u,f),thi...
class K_ (line 3141) | class K_ extends It{constructor(e,t,n,i,s,r,o,l,c){super(e,t,n,i,s,r,o,l...
method constructor (line 3141) | constructor(e,t,n,i,s,r,o,l,c){super(e,t,n,i,s,r,o,l,c),this.isCanvasT...
class Gn (line 3141) | class Gn{constructor(){this.type="Curve",this.arcLengthDivisions=200}get...
method constructor (line 3141) | constructor(){this.type="Curve",this.arcLengthDivisions=200}
method getPoint (line 3141) | getPoint(){return console.warn("THREE.Curve: .getPoint() not implement...
method getPointAt (line 3141) | getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}
method getPoints (line 3141) | getPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/...
method getSpacedPoints (line 3141) | getSpacedPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPo...
method getLength (line 3141) | getLength(){const e=this.getLengths();return e[e.length-1]}
method getLengths (line 3141) | getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.ca...
method updateArcLengths (line 3141) | updateArcLengths(){this.needsUpdate=!0,this.getLengths()}
method getUtoTmapping (line 3141) | getUtoTmapping(e,t){const n=this.getLengths();let i=0;const s=n.length...
method getTangent (line 3141) | getTangent(e,t){let i=e-1e-4,s=e+1e-4;i<0&&(i=0),s>1&&(s=1);const r=th...
method getTangentAt (line 3141) | getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangen...
method computeFrenetFrames (line 3141) | computeFrenetFrames(e,t){const n=new I,i=[],s=[],r=[],o=new I,l=new Ne...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
method copy (line 3141) | copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}
method toJSON (line 3141) | toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve....
method fromJSON (line 3141) | fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}
class Ll (line 3141) | class Ll extends Gn{constructor(e=0,t=0,n=1,i=1,s=0,r=Math.PI*2,o=!1,l=0...
method constructor (line 3141) | constructor(e=0,t=0,n=1,i=1,s=0,r=Math.PI*2,o=!1,l=0){super(),this.isE...
method getPoint (line 3141) | getPoint(e,t){const n=t||new fe,i=Math.PI*2;let s=this.aEndAngle-this....
method copy (line 3141) | copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e....
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRa...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xR...
class Lp (line 3141) | class Lp extends Ll{constructor(e,t,n,i,s,r){super(e,t,n,n,i,s,r),this.i...
method constructor (line 3141) | constructor(e,t,n,i,s,r){super(e,t,n,n,i,s,r),this.isArcCurve=!0,this....
function Ou (line 3141) | function Ou(){let a=0,e=0,t=0,n=0;function i(s,r,o,l){a=s,e=o,t=-3*s+3*r...
class Rp (line 3141) | class Rp extends Gn{constructor(e=[],t=!1,n="centripetal",i=.5){super(),...
method constructor (line 3141) | constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomC...
method getPoint (line 3141) | getPoint(e,t=new I){const n=t,i=this.points,s=i.length,r=(s-(this.clos...
method copy (line 3141) | copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points....
method fromJSON (line 3141) | fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.le...
function yf (line 3141) | function yf(a,e,t,n,i){const s=(n-e)*.5,r=(i-t)*.5,o=a*a,l=a*o;return(2*...
function J_ (line 3141) | function J_(a,e){const t=1-a;return t*t*e}
function $_ (line 3141) | function $_(a,e){return 2*(1-a)*a*e}
function Q_ (line 3141) | function Q_(a,e){return a*a*e}
function xo (line 3141) | function xo(a,e,t,n){return J_(a,e)+$_(a,t)+Q_(a,n)}
function eb (line 3141) | function eb(a,e){const t=1-a;return t*t*t*e}
function tb (line 3141) | function tb(a,e){const t=1-a;return 3*t*t*a*e}
function nb (line 3141) | function nb(a,e){return 3*(1-a)*a*a*e}
function ib (line 3141) | function ib(a,e){return a*a*a*e}
function vo (line 3141) | function vo(a,e,t,n,i){return eb(a,e)+tb(a,t)+nb(a,n)+ib(a,i)}
class Bu (line 3141) | class Bu extends Gn{constructor(e=new fe,t=new fe,n=new fe,i=new fe){sup...
method constructor (line 3141) | constructor(e=new fe,t=new fe,n=new fe,i=new fe){super(),this.isCubicB...
method getPoint (line 3141) | getPoint(e,t=new fe){const n=t,i=this.v0,s=this.v1,r=this.v2,o=this.v3...
method copy (line 3141) | copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),thi...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.f...
class Ip (line 3141) | class Ip extends Gn{constructor(e=new I,t=new I,n=new I,i=new I){super()...
method constructor (line 3141) | constructor(e=new I,t=new I,n=new I,i=new I){super(),this.isCubicBezie...
method getPoint (line 3141) | getPoint(e,t=new I){const n=t,i=this.v0,s=this.v1,r=this.v2,o=this.v3;...
method copy (line 3141) | copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),thi...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.f...
class Rl (line 3141) | class Rl extends Gn{constructor(e=new fe,t=new fe){super(),this.isLineCu...
method constructor (line 3141) | constructor(e=new fe,t=new fe){super(),this.isLineCurve=!0,this.type="...
method getPoint (line 3141) | getPoint(e,t=new fe){const n=t;return e===1?n.copy(this.v2):(n.copy(th...
method getPointAt (line 3141) | getPointAt(e,t){return this.getPoint(e,t)}
method getTangent (line 3141) | getTangent(e,t){const n=t||new fe;return n.copy(this.v2).sub(this.v1)....
method copy (line 3141) | copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.f...
class Pp (line 3141) | class Pp extends Gn{constructor(e=new I,t=new I){super(),this.isLineCurv...
method constructor (line 3141) | constructor(e=new I,t=new I){super(),this.isLineCurve3=!0,this.type="L...
method getPoint (line 3141) | getPoint(e,t=new I){const n=t;return e===1?n.copy(this.v2):(n.copy(thi...
method getPointAt (line 3141) | getPointAt(e,t){return this.getPoint(e,t)}
method copy (line 3141) | copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.f...
class zu (line 3141) | class zu extends Gn{constructor(e=new fe,t=new fe,n=new fe){super(),this...
method constructor (line 3141) | constructor(e=new fe,t=new fe,n=new fe){super(),this.isQuadraticBezier...
method getPoint (line 3141) | getPoint(e,t=new fe){const n=t,i=this.v0,s=this.v1,r=this.v2;return n....
method copy (line 3141) | copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),thi...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.f...
class Uu (line 3141) | class Uu extends Gn{constructor(e=new I,t=new I,n=new I){super(),this.is...
method constructor (line 3141) | constructor(e=new I,t=new I,n=new I){super(),this.isQuadraticBezierCur...
method getPoint (line 3141) | getPoint(e,t=new I){const n=t,i=this.v0,s=this.v1,r=this.v2;return n.s...
method copy (line 3141) | copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),thi...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=thi...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.f...
class Gu (line 3141) | class Gu extends Gn{constructor(e=[]){super(),this.isSplineCurve=!0,this...
method constructor (line 3141) | constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve...
method getPoint (line 3141) | getPoint(e,t=new fe){const n=t,i=this.points,s=(i.length-1)*e,r=Math.f...
method copy (line 3141) | copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points....
method fromJSON (line 3141) | fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.le...
class Dp (line 3141) | class Dp extends Gn{constructor(){super(),this.type="CurvePath",this.cur...
method constructor (line 3141) | constructor(){super(),this.type="CurvePath",this.curves=[],this.autoCl...
method add (line 3141) | add(e){this.curves.push(e)}
method closePath (line 3141) | closePath(){const e=this.curves[0].getPoint(0),t=this.curves[this.curv...
method getPoint (line 3141) | getPoint(e,t){const n=e*this.getLength(),i=this.getCurveLengths();let ...
method getLength (line 3141) | getLength(){const e=this.getCurveLengths();return e[e.length-1]}
method updateArcLengths (line 3141) | updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.get...
method getCurveLengths (line 3141) | getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===thi...
method getSpacedPoints (line 3141) | getSpacedPoints(e=40){const t=[];for(let n=0;n<=e;n++)t.push(this.getP...
method getPoints (line 3141) | getPoints(e=12){const t=[];let n;for(let i=0,s=this.curves;i<s.length;...
method copy (line 3141) | copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t<n...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();e.autoClose=this.autoClose,e.curves=[]...
method fromJSON (line 3141) | fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[...
class Lo (line 3141) | class Lo extends Dp{constructor(e){super(),this.type="Path",this.current...
method constructor (line 3141) | constructor(e){super(),this.type="Path",this.currentPoint=new fe,e&&th...
method setFromPoints (line 3141) | setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n...
method moveTo (line 3141) | moveTo(e,t){return this.currentPoint.set(e,t),this}
method lineTo (line 3141) | lineTo(e,t){const n=new Rl(this.currentPoint.clone(),new fe(e,t));retu...
method quadraticCurveTo (line 3141) | quadraticCurveTo(e,t,n,i){const s=new zu(this.currentPoint.clone(),new...
method bezierCurveTo (line 3141) | bezierCurveTo(e,t,n,i,s,r){const o=new Bu(this.currentPoint.clone(),ne...
method splineThru (line 3141) | splineThru(e){const t=[this.currentPoint.clone()].concat(e),n=new Gu(t...
method arc (line 3141) | arc(e,t,n,i,s,r){const o=this.currentPoint.x,l=this.currentPoint.y;ret...
method absarc (line 3141) | absarc(e,t,n,i,s,r){return this.absellipse(e,t,n,n,i,s,r),this}
method ellipse (line 3141) | ellipse(e,t,n,i,s,r,o,l){const c=this.currentPoint.x,h=this.currentPoi...
method absellipse (line 3141) | absellipse(e,t,n,i,s,r,o,l){const c=new Ll(e,t,n,i,s,r,o,l);if(this.cu...
method copy (line 3141) | copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoin...
method fromJSON (line 3141) | fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.cur...
class Fs (line 3141) | class Fs extends Xe{constructor(e=[new fe(0,-.5),new fe(.5,0),new fe(0,....
method constructor (line 3141) | constructor(e=[new fe(0,-.5),new fe(.5,0),new fe(0,.5)],t=12,n=0,i=Mat...
method fromJSON (line 3141) | static fromJSON(e){return new Fs(e.points,e.segments,e.phiStart,e.phiL...
class Er (line 3141) | class Er extends Fs{constructor(e=1,t=1,n=4,i=8){const s=new Lo;s.absarc...
method constructor (line 3141) | constructor(e=1,t=1,n=4,i=8){const s=new Lo;s.absarc(0,-t/2,e,Math.PI*...
method fromJSON (line 3141) | static fromJSON(e){return new Er(e.radius,e.length,e.capSegments,e.rad...
class Cr (line 3141) | class Cr extends Xe{constructor(e=1,t=8,n=0,i=Math.PI*2){super(),this.ty...
method constructor (line 3141) | constructor(e=1,t=8,n=0,i=Math.PI*2){super(),this.type="CircleGeometry...
method fromJSON (line 3141) | static fromJSON(e){return new Cr(e.radius,e.segments,e.thetaStart,e.th...
class $i (line 3141) | class $i extends Xe{constructor(e=1,t=1,n=1,i=8,s=1,r=!1,o=0,l=Math.PI*2...
method constructor (line 3141) | constructor(e=1,t=1,n=1,i=8,s=1,r=!1,o=0,l=Math.PI*2){super(),this.typ...
method fromJSON (line 3141) | static fromJSON(e){return new $i(e.radiusTop,e.radiusBottom,e.height,e...
class Lr (line 3141) | class Lr extends $i{constructor(e=1,t=1,n=8,i=1,s=!1,r=0,o=Math.PI*2){su...
method constructor (line 3141) | constructor(e=1,t=1,n=8,i=1,s=!1,r=0,o=Math.PI*2){super(0,e,t,n,i,s,r,...
method fromJSON (line 3141) | static fromJSON(e){return new Lr(e.radius,e.height,e.radialSegments,e....
class ii (line 3141) | class ii extends Xe{constructor(e=[],t=[],n=1,i=0){super(),this.type="Po...
method constructor (line 3141) | constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",...
method fromJSON (line 3141) | static fromJSON(e){return new ii(e.vertices,e.indices,e.radius,e.detai...
class Rr (line 3141) | class Rr extends ii{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/...
method constructor (line 3141) | constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n,s=[-1,-1,-1,-1,-...
method fromJSON (line 3141) | static fromJSON(e){return new Rr(e.radius,e.detail)}
class Fp (line 3141) | class Fp extends Xe{constructor(e=null,t=1){if(super(),this.type="EdgesG...
method constructor (line 3141) | constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.para...
class Ls (line 3141) | class Ls extends Lo{constructor(e){super(e),this.uuid=En(),this.type="Sh...
method constructor (line 3141) | constructor(e){super(e),this.uuid=En(),this.type="Shape",this.holes=[]}
method getPointsHoles (line 3141) | getPointsHoles(e){const t=[];for(let n=0,i=this.holes.length;n<i;n++)t...
method extractPoints (line 3141) | extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHo...
method copy (line 3141) | copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=...
method fromJSON (line 3141) | fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t...
function Np (line 3141) | function Np(a,e,t,n,i){let s,r;if(i===_b(a,e,t,n)>0)for(s=e;s<t;s+=n)r=x...
function Qi (line 3141) | function Qi(a,e){if(!a)return a;e||(e=a);let t=a,n;do if(n=!1,!t.steiner...
function Ro (line 3141) | function Ro(a,e,t,n,i,s,r){if(!a)return;!r&&s&&pb(a,n,i,s);let o=a,l,c;f...
function rb (line 3141) | function rb(a){const e=a.prev,t=a,n=a.next;if(Nt(e,t,n)>=0)return!1;let ...
function ob (line 3141) | function ob(a,e,t,n){const i=a.prev,s=a,r=a.next;if(Nt(i,s,r)>=0)return!...
function ab (line 3141) | function ab(a,e,t){let n=a;do{const i=n.prev,s=n.next.next;!Il(i,s)&&kp(...
function lb (line 3141) | function lb(a,e,t,n,i,s){let r=a;do{let o=r.next.next;for(;o!==r.prev;){...
function cb (line 3141) | function cb(a,e,t,n){const i=[];let s,r,o,l,c;for(s=0,r=e.length;s<r;s++...
function ub (line 3141) | function ub(a,e){return a.x-e.x}
function hb (line 3141) | function hb(a,e){if(e=fb(a,e),e){const t=Op(e,a);Qi(e,e.next),Qi(t,t.nex...
function fb (line 3141) | function fb(a,e){let t=e;const n=a.x,i=a.y;let s=-1/0,r;do{if(i<=t.y&&i>...
function db (line 3141) | function db(a,e){return Nt(a.prev,a,e.prev)<0&&Nt(e.next,a,a.next)<0}
function pb (line 3141) | function pb(a,e,t,n){let i=a;do i.z===null&&(i.z=ou(i.x,i.y,e,t,n)),i.pr...
function mb (line 3141) | function mb(a){let e,t,n,i,s,r,o,l,c=1;do{for(t=a,a=null,s=null,r=0;t;){...
function ou (line 3141) | function ou(a,e,t,n,i){return a=32767*(a-t)*i,e=32767*(e-n)*i,a=(a|a<<8)...
function gb (line 3141) | function gb(a){let e=a,t=a;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.ne...
function xr (line 3141) | function xr(a,e,t,n,i,s,r,o){return(i-r)*(e-o)-(a-r)*(s-o)>=0&&(a-r)*(n-...
function yb (line 3141) | function yb(a,e){return a.next.i!==e.i&&a.prev.i!==e.i&&!xb(a,e)&&(Io(a,...
function Nt (line 3141) | function Nt(a,e,t){return(e.y-a.y)*(t.x-e.x)-(e.x-a.x)*(t.y-e.y)}
function Il (line 3141) | function Il(a,e){return a.x===e.x&&a.y===e.y}
function kp (line 3141) | function kp(a,e,t,n){const i=ka(Nt(a,e,t)),s=ka(Nt(a,e,n)),r=ka(Nt(t,n,a...
function Na (line 3141) | function Na(a,e,t){return e.x<=Math.max(a.x,t.x)&&e.x>=Math.min(a.x,t.x)...
function ka (line 3141) | function ka(a){return a>0?1:a<0?-1:0}
function xb (line 3141) | function xb(a,e){let t=a;do{if(t.i!==a.i&&t.next.i!==a.i&&t.i!==e.i&&t.n...
function Io (line 3141) | function Io(a,e){return Nt(a.prev,a,a.next)<0?Nt(a,e,a.next)>=0&&Nt(a,a....
function vb (line 3141) | function vb(a,e){let t=a,n=!1;const i=(a.x+e.x)/2,s=(a.y+e.y)/2;do t.y>s...
function Op (line 3141) | function Op(a,e){const t=new au(a.i,a.x,a.y),n=new au(e.i,e.x,e.y),i=a.n...
function xf (line 3141) | function xf(a,e,t,n){const i=new au(a,e,t);return n?(i.next=n.next,i.pre...
function Po (line 3141) | function Po(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.n...
function au (line 3141) | function au(a,e,t){this.i=a,this.x=e,this.y=t,this.prev=null,this.next=n...
function _b (line 3141) | function _b(a,e,t,n){let i=0;for(let s=e,r=t-n;s<t;s+=n)i+=(a[r]-a[s])*(...
class ei (line 3141) | class ei{static area(e){const t=e.length;let n=0;for(let i=t-1,s=0;s<t;i...
method area (line 3141) | static area(e){const t=e.length;let n=0;for(let i=t-1,s=0;s<t;i=s++)n+...
method isClockWise (line 3141) | static isClockWise(e){return ei.area(e)<0}
method triangulateShape (line 3141) | static triangulateShape(e,t){const n=[],i=[],s=[];vf(e),_f(n,e);let r=...
function vf (line 3141) | function vf(a){const e=a.length;e>2&&a[e-1].equals(a[0])&&a.pop()}
function _f (line 3141) | function _f(a,e){for(let t=0;t<e.length;t++)a.push(e[t].x),a.push(e[t].y)}
class Ir (line 3141) | class Ir extends Xe{constructor(e=new Ls([new fe(.5,.5),new fe(-.5,.5),n...
method constructor (line 3141) | constructor(e=new Ls([new fe(.5,.5),new fe(-.5,.5),new fe(-.5,-.5),new...
method toJSON (line 3141) | toJSON(){const e=super.toJSON(),t=this.parameters.shapes,n=this.parame...
method fromJSON (line 3141) | static fromJSON(e,t){const n=[];for(let s=0,r=e.shapes.length;s<r;s++)...
function wb (line 3141) | function wb(a,e,t){if(t.shapes=[],Array.isArray(a))for(let n=0,i=a.lengt...
class Pr (line 3141) | class Pr extends ii{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=[-...
method constructor (line 3141) | constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,...
method fromJSON (line 3141) | static fromJSON(e){return new Pr(e.radius,e.detail)}
class Ns (line 3141) | class Ns extends ii{constructor(e=1,t=0){const n=[1,0,0,-1,0,0,0,1,0,0,-...
method constructor (line 3141) | constructor(e=1,t=0){const n=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],...
method fromJSON (line 3141) | static fromJSON(e){return new Ns(e.radius,e.detail)}
class Dr (line 3141) | class Dr extends Xe{constructor(e=.5,t=1,n=8,i=1,s=0,r=Math.PI*2){super(...
method constructor (line 3141) | constructor(e=.5,t=1,n=8,i=1,s=0,r=Math.PI*2){super(),this.type="RingG...
method fromJSON (line 3141) | static fromJSON(e){return new Dr(e.innerRadius,e.outerRadius,e.thetaSe...
class Fr (line 3141) | class Fr extends Xe{constructor(e=new Ls([new fe(0,.5),new fe(-.5,-.5),n...
method constructor (line 3141) | constructor(e=new Ls([new fe(0,.5),new fe(-.5,-.5),new fe(.5,-.5)]),t=...
method toJSON (line 3141) | toJSON(){const e=super.toJSON(),t=this.parameters.shapes;return Mb(t,e)}
method fromJSON (line 3141) | static fromJSON(e,t){const n=[];for(let i=0,s=e.shapes.length;i<s;i++)...
function Mb (line 3141) | function Mb(a,e){if(e.shapes=[],Array.isArray(a))for(let t=0,n=a.length;...
class ks (line 3141) | class ks extends Xe{constructor(e=1,t=32,n=16,i=0,s=Math.PI*2,r=0,o=Math...
method constructor (line 3141) | constructor(e=1,t=32,n=16,i=0,s=Math.PI*2,r=0,o=Math.PI){super(),this....
method fromJSON (line 3141) | static fromJSON(e){return new ks(e.radius,e.widthSegments,e.heightSegm...
class Nr (line 3141) | class Nr extends ii{constructor(e=1,t=0){const n=[1,1,1,-1,-1,1,-1,1,-1,...
method constructor (line 3141) | constructor(e=1,t=0){const n=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],i=[2,1,0,...
method fromJSON (line 3141) | static fromJSON(e){return new Nr(e.radius,e.detail)}
class kr (line 3141) | class kr extends Xe{constructor(e=1,t=.4,n=8,i=6,s=Math.PI*2){super(),th...
method constructor (line 3141) | constructor(e=1,t=.4,n=8,i=6,s=Math.PI*2){super(),this.type="TorusGeom...
method fromJSON (line 3141) | static fromJSON(e){return new kr(e.radius,e.tube,e.radialSegments,e.tu...
class Or (line 3141) | class Or extends Xe{constructor(e=1,t=.4,n=64,i=8,s=2,r=3){super(),this....
method constructor (line 3141) | constructor(e=1,t=.4,n=64,i=8,s=2,r=3){super(),this.type="TorusKnotGeo...
method fromJSON (line 3141) | static fromJSON(e){return new Or(e.radius,e.tube,e.tubularSegments,e.r...
class Br (line 3141) | class Br extends Xe{constructor(e=new Uu(new I(-1,-1,0),new I(-1,1,0),ne...
method constructor (line 3141) | constructor(e=new Uu(new I(-1,-1,0),new I(-1,1,0),new I(1,1,0)),t=64,n...
method toJSON (line 3141) | toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJ...
method fromJSON (line 3141) | static fromJSON(e){return new Br(new Vu[e.path.type]().fromJSON(e.path...
class Bp (line 3141) | class Bp extends Xe{constructor(e=null){if(super(),this.type="WireframeG...
method constructor (line 3141) | constructor(e=null){if(super(),this.type="WireframeGeometry",this.para...
function bf (line 3141) | function bf(a,e,t){const n=`${a.x},${a.y},${a.z}-${e.x},${e.y},${e.z}`,i...
class zp (line 3141) | class zp extends Wt{constructor(e){super(),this.isShadowMaterial=!0,this...
method constructor (line 3141) | constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMater...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,t...
class Up (line 3141) | class Up extends ni{constructor(e){super(e),this.isRawShaderMaterial=!0,...
method constructor (line 3141) | constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShad...
class Vs (line 3141) | class Vs extends Wt{constructor(e){super(),this.isMeshStandardMaterial=!...
method constructor (line 3141) | constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={ST...
method copy (line 3141) | copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.cop...
class Ri (line 3141) | class Ri extends Vs{constructor(e){super(),this.isMeshPhysicalMaterial=!...
method constructor (line 3141) | constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={ST...
method sheen (line 3141) | get sheen(){return this._sheen}
method sheen (line 3141) | set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}
method clearcoat (line 3141) | get clearcoat(){return this._clearcoat}
method clearcoat (line 3141) | set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoa...
method iridescence (line 3141) | get iridescence(){return this._iridescence}
method iridescence (line 3141) | set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._irid...
method transmission (line 3141) | get transmission(){return this._transmission}
method transmission (line 3141) | set transmission(e){this._transmission>0!=e>0&&this.version++,this._tr...
method copy (line 3141) | copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},th...
class ti (line 3141) | class ti extends Wt{constructor(e){super(),this.isMeshPhongMaterial=!0,t...
method constructor (line 3141) | constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhon...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.specular.co...
class Gp (line 3141) | class Gp extends Wt{constructor(e){super(),this.isMeshToonMaterial=!0,th...
method constructor (line 3141) | constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:"...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,t...
class Vp (line 3141) | class Vp extends Wt{constructor(e){super(),this.isMeshNormalMaterial=!0,...
method constructor (line 3141) | constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNor...
method copy (line 3141) | copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.b...
class Pl (line 3141) | class Pl extends Wt{constructor(e){super(),this.isMeshLambertMaterial=!0...
method constructor (line 3141) | constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLa...
method copy (line 3141) | copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,t...
class Hp (line 3141) | class Hp extends Wt{constructor(e){super(),this.isMeshMatcapMaterial=!0,...
method constructor (line 3141) | constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATC...
method copy (line 3141) | copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(...
class Wp (line 3141) | class Wp extends qt{constructor(e){super(),this.isLineDashedMaterial=!0,...
method constructor (line 3141) | constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDas...
method copy (line 3141) | copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSi...
function Dn (line 3141) | function Dn(a,e,t){return Hu(a)?new a.constructor(a.subarray(e,t!==void ...
function Ss (line 3141) | function Ss(a,e,t){return!a||!t&&a.constructor===e?a:typeof e.BYTES_PER_...
function Hu (line 3141) | function Hu(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)}
function qp (line 3141) | function qp(a){function e(i,s){return a[i]-a[s]}const t=a.length,n=new A...
function lu (line 3141) | function lu(a,e,t){const n=a.length,i=new a.constructor(n);for(let s=0,r...
function Wu (line 3141) | function Wu(a,e,t,n){let i=1,s=a[0];for(;s!==void 0&&s[n]===void 0;)s=a[...
function Sb (line 3141) | function Sb(a,e,t,n,i=30){const s=a.clone();s.name=e;const r=[];for(let ...
function Tb (line 3141) | function Tb(a,e=0,t=a,n=30){n<=0&&(n=30);const i=t.tracks.length,s=e/n;f...
class Hr (line 3141) | class Hr{constructor(e,t,n,i){this.parameterPositions=e,this._cachedInde...
method constructor (line 3141) | constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,thi...
method evaluate (line 3141) | evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,i=...
method getSettings_ (line 3141) | getSettings_(){return this.settings||this.DefaultSettings_}
method copySampleValue_ (line 3141) | copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=th...
method interpolate_ (line 3141) | interpolate_(){throw new Error("call to abstract method")}
method intervalChanged_ (line 3141) | intervalChanged_(){}
class Xp (line 3141) | class Xp extends Hr{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev...
method constructor (line 3141) | constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPr...
method intervalChanged_ (line 3141) | intervalChanged_(e,t,n){const i=this.parameterPositions;let s=e-2,r=e+...
method interpolate_ (line 3141) | interpolate_(e,t,n,i){const s=this.resultBuffer,r=this.sampleValues,o=...
class qu (line 3141) | class qu extends Hr{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t...
method constructor (line 3141) | constructor(e,t,n,i){super(e,t,n,i)}
method interpolate_ (line 3141) | interpolate_(e,t,n,i){const s=this.resultBuffer,r=this.sampleValues,o=...
class jp (line 3141) | class jp extends Hr{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){...
method constructor (line 3141) | constructor(e,t,n,i){super(e,t,n,i)}
method interpolate_ (line 3141) | interpolate_(e){return this.copySampleValue_(e-1)}
class Yn (line 3141) | class Yn{constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.Keyfr...
method constructor (line 3141) | constructor(e,t,n,i){if(e===void 0)throw new Error("THREE.KeyframeTrac...
method toJSON (line 3141) | static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON...
method InterpolantFactoryMethodDiscrete (line 3141) | InterpolantFactoryMethodDiscrete(e){return new jp(this.times,this.valu...
method InterpolantFactoryMethodLinear (line 3141) | InterpolantFactoryMethodLinear(e){return new qu(this.times,this.values...
method InterpolantFactoryMethodSmooth (line 3141) | InterpolantFactoryMethodSmooth(e){return new Xp(this.times,this.values...
method setInterpolation (line 3141) | setInterpolation(e){let t;switch(e){case Sr:t=this.InterpolantFactoryM...
method getInterpolation (line 3141) | getInterpolation(){switch(this.createInterpolant){case this.Interpolan...
method getValueSize (line 3141) | getValueSize(){return this.values.length/this.times.length}
method shift (line 3141) | shift(e){if(e!==0){const t=this.times;for(let n=0,i=t.length;n!==i;++n...
method scale (line 3141) | scale(e){if(e!==1){const t=this.times;for(let n=0,i=t.length;n!==i;++n...
method trim (line 3141) | trim(e,t){const n=this.times,i=n.length;let s=0,r=i-1;for(;s!==i&&n[s]...
method validate (line 3141) | validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(...
method optimize (line 3141) | optimize(){const e=Dn(this.times),t=Dn(this.values),n=this.getValueSiz...
method clone (line 3141) | clone(){const e=Dn(this.times,0),t=Dn(this.values,0),n=this.constructo...
class Hs (line 3141) | class Hs extends Yn{}
class Xu (line 3141) | class Xu extends Yn{}
class Os (line 3141) | class Os extends Yn{}
class Yp (line 3141) | class Yp extends Hr{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t...
method constructor (line 3141) | constructor(e,t,n,i){super(e,t,n,i)}
method interpolate_ (line 3141) | interpolate_(e,t,n,i){const s=this.resultBuffer,r=this.sampleValues,o=...
class si (line 3141) | class si extends Yn{InterpolantFactoryMethodLinear(e){return new Yp(this...
method InterpolantFactoryMethodLinear (line 3141) | InterpolantFactoryMethodLinear(e){return new Yp(this.times,this.values...
class Ws (line 3141) | class Ws extends Yn{}
class Ti (line 3141) | class Ti extends Yn{}
class Ai (line 3141) | class Ai{constructor(e,t=-1,n,i=xl){this.name=e,this.tracks=n,this.durat...
method constructor (line 3141) | constructor(e,t=-1,n,i=xl){this.name=e,this.tracks=n,this.duration=t,t...
method parse (line 3141) | static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let r=0,o=n.l...
method toJSON (line 3141) | static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.durat...
method CreateFromMorphTargetSequence (line 3141) | static CreateFromMorphTargetSequence(e,t,n,i){const s=t.length,r=[];fo...
method findByName (line 3141) | static findByName(e,t){let n=e;if(!Array.isArray(e)){const i=e;n=i.geo...
method CreateClipsFromMorphTargetSequences (line 3141) | static CreateClipsFromMorphTargetSequences(e,t,n){const i={},s=/^([\w-...
method parseAnimation (line 3141) | static parseAnimation(e,t){if(!e)return console.error("THREE.Animation...
method resetDuration (line 3141) | resetDuration(){const e=this.tracks;let t=0;for(let n=0,i=e.length;n!=...
method trim (line 3141) | trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this...
method validate (line 3141) | validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tra...
method optimize (line 3141) | optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimiz...
method clone (line 3141) | clone(){const e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tr...
method toJSON (line 3141) | toJSON(){return this.constructor.toJSON(this)}
function Eb (line 3141) | function Eb(a){switch(a.toLowerCase()){case"scalar":case"double":case"fl...
function Cb (line 3141) | function Cb(a){if(a.type===void 0)throw new Error("THREE.KeyframeTrack: ...
class ju (line 3141) | class ju{constructor(e,t,n){const i=this;let s=!1,r=0,o=0,l;const c=[];t...
method constructor (line 3141) | constructor(e,t,n){const i=this;let s=!1,r=0,o=0,l;const c=[];this.onS...
class Xt (line 3141) | class Xt{constructor(e){this.manager=e!==void 0?e:Yu,this.crossOrigin="a...
method constructor (line 3141) | constructor(e){this.manager=e!==void 0?e:Yu,this.crossOrigin="anonymou...
method load (line 3141) | load(){}
method loadAsync (line 3141) | loadAsync(e,t){const n=this;return new Promise(function(i,s){n.load(e,...
method parse (line 3141) | parse(){}
method setCrossOrigin (line 3141) | setCrossOrigin(e){return this.crossOrigin=e,this}
method setWithCredentials (line 3141) | setWithCredentials(e){return this.withCredentials=e,this}
method setPath (line 3141) | setPath(e){return this.path=e,this}
method setResourcePath (line 3141) | setResourcePath(e){return this.resourcePath=e,this}
method setRequestHeader (line 3141) | setRequestHeader(e){return this.requestHeader=e,this}
class Lb (line 3141) | class Lb extends Error{constructor(e,t){super(e),this.response=t}}
method constructor (line 3141) | constructor(e,t){super(e),this.response=t}
class $t (line 3141) | class $t extends Xt{constructor(e){super(e)}load(e,t,n,i){e===void 0&&(e...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e...
method setResponseType (line 3141) | setResponseType(e){return this.responseType=e,this}
method setMimeType (line 3141) | setMimeType(e){return this.mimeType=e,this}
class Rb (line 3141) | class Rb extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=new $t(this.manager);r.setPath(this.path)...
method parse (line 3141) | parse(e){const t=[];for(let n=0;n<e.length;n++){const i=Ai.parse(e[n])...
class Zp (line 3141) | class Zp extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=[],o=new Cp,l=new $t(this.manager);l.setP...
class Do (line 3141) | class Do extends Xt{constructor(e){super(e)}load(e,t,n,i){this.path!==vo...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){this.path!==void 0&&(e=this.path+e),e=this.manager.resol...
class Ib (line 3141) | class Ib extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=new Vo...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=new Vo,r=new Do(this.manager);r.setCrossOrigin(t...
class Kp (line 3141) | class Kp extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=new vr,o=new $t(this.manager);return o.se...
class zs (line 3141) | class zs extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=new It...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=new It,r=new Do(this.manager);return r.setCrossO...
class ss (line 3141) | class ss extends pt{constructor(e,t=1){super(),this.isLight=!0,this.type...
method constructor (line 3141) | constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.colo...
method dispose (line 3141) | dispose(){}
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensi...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.get...
class Zu (line 3141) | class Zu extends ss{constructor(e,t,n){super(e,n),this.isHemisphereLight...
method constructor (line 3141) | constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="Hem...
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),...
class Ku (line 3141) | class Ku{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this...
method constructor (line 3141) | constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius...
method getViewportCount (line 3141) | getViewportCount(){return this._viewportCount}
method getFrustum (line 3141) | getFrustum(){return this._frustum}
method updateMatrices (line 3141) | updateMatrices(e){const t=this.camera,n=this.matrix;Sf.setFromMatrixPo...
method getViewport (line 3141) | getViewport(e){return this._viewports[e]}
method getFrameExtents (line 3141) | getFrameExtents(){return this._frameExtents}
method dispose (line 3141) | dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.disp...
method copy (line 3141) | copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radi...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
method toJSON (line 3141) | toJSON(){const e={};return this.bias!==0&&(e.bias=this.bias),this.norm...
class Pb (line 3141) | class Pb extends Ku{constructor(){super(new Ot(50,1,.5,500)),this.isSpot...
method constructor (line 3141) | constructor(){super(new Ot(50,1,.5,500)),this.isSpotLightShadow=!0,thi...
method updateMatrices (line 3141) | updateMatrices(e){const t=this.camera,n=Eo*2*e.angle*this.focus,i=this...
method copy (line 3141) | copy(e){return super.copy(e),this.focus=e.focus,this}
class qo (line 3141) | class qo extends ss{constructor(e,t,n=0,i=Math.PI/3,s=0,r=1){super(e,t),...
method constructor (line 3141) | constructor(e,t,n=0,i=Math.PI/3,s=0,r=1){super(e,t),this.isSpotLight=!...
method power (line 3141) | get power(){return this.intensity*Math.PI}
method power (line 3141) | set power(e){this.intensity=e/Math.PI}
method dispose (line 3141) | dispose(){this.shadow.dispose()}
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e...
class Db (line 3141) | class Db extends Ku{constructor(){super(new Ot(90,1,.5,500)),this.isPoin...
method constructor (line 3141) | constructor(){super(new Ot(90,1,.5,500)),this.isPointLightShadow=!0,th...
method updateMatrices (line 3141) | updateMatrices(e,t=0){const n=this.camera,i=this.matrix,s=e.distance||...
class es (line 3141) | class es extends ss{constructor(e,t,n=0,i=1){super(e,t),this.isPointLigh...
method constructor (line 3141) | constructor(e,t,n=0,i=1){super(e,t),this.isPointLight=!0,this.type="Po...
method power (line 3141) | get power(){return this.intensity*4*Math.PI}
method power (line 3141) | set power(e){this.intensity=e/(4*Math.PI)}
method dispose (line 3141) | dispose(){this.shadow.dispose()}
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e...
class Fb (line 3141) | class Fb extends Ku{constructor(){super(new Us(-5,5,5,-5,.5,500)),this.i...
method constructor (line 3141) | constructor(){super(new Us(-5,5,5,-5,.5,500)),this.isDirectionalLightS...
class Wr (line 3141) | class Wr extends ss{constructor(e,t){super(e,t),this.isDirectionalLight=...
method constructor (line 3141) | constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="Dire...
method dispose (line 3141) | dispose(){this.shadow.dispose()}
method copy (line 3141) | copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=...
class Xo (line 3141) | class Xo extends ss{constructor(e,t){super(e,t),this.isAmbientLight=!0,t...
method constructor (line 3141) | constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientL...
class Jp (line 3141) | class Jp extends ss{constructor(e,t,n=10,i=10){super(e,t),this.isRectAre...
method constructor (line 3141) | constructor(e,t,n=10,i=10){super(e,t),this.isRectAreaLight=!0,this.typ...
method power (line 3141) | get power(){return this.intensity*this.width*this.height*Math.PI}
method power (line 3141) | set power(e){this.intensity=e/(this.width*this.height*Math.PI)}
method copy (line 3141) | copy(e){return super.copy(e),this.width=e.width,this.height=e.height,t...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);return t.object.width=this.width,t.o...
class $p (line 3141) | class $p{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[...
method constructor (line 3141) | constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(l...
method set (line 3141) | set(e){for(let t=0;t<9;t++)this.coefficients[t].copy(e[t]);return this}
method zero (line 3141) | zero(){for(let e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}
method getAt (line 3141) | getAt(e,t){const n=e.x,i=e.y,s=e.z,r=this.coefficients;return t.copy(r...
method getIrradianceAt (line 3141) | getIrradianceAt(e,t){const n=e.x,i=e.y,s=e.z,r=this.coefficients;retur...
method add (line 3141) | add(e){for(let t=0;t<9;t++)this.coefficients[t].add(e.coefficients[t])...
method addScaledSH (line 3141) | addScaledSH(e,t){for(let n=0;n<9;n++)this.coefficients[n].addScaledVec...
method scale (line 3141) | scale(e){for(let t=0;t<9;t++)this.coefficients[t].multiplyScalar(e);re...
method lerp (line 3141) | lerp(e,t){for(let n=0;n<9;n++)this.coefficients[n].lerp(e.coefficients...
method equals (line 3141) | equals(e){for(let t=0;t<9;t++)if(!this.coefficients[t].equals(e.coeffi...
method copy (line 3141) | copy(e){return this.set(e.coefficients)}
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
method fromArray (line 3141) | fromArray(e,t=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].fr...
method toArray (line 3141) | toArray(e=[],t=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].t...
method getBasisAt (line 3141) | static getBasisAt(e,t){const n=e.x,i=e.y,s=e.z;t[0]=.282095,t[1]=.4886...
class Dl (line 3141) | class Dl extends ss{constructor(e=new $p,t=1){super(void 0,t),this.isLig...
method constructor (line 3141) | constructor(e=new $p,t=1){super(void 0,t),this.isLightProbe=!0,this.sh=e}
method copy (line 3141) | copy(e){return super.copy(e),this.sh.copy(e.sh),this}
method fromJSON (line 3141) | fromJSON(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);return t.object.sh=this.sh.toArray(),t}
class Fl (line 3141) | class Fl extends Xt{constructor(e){super(e),this.textures={}}load(e,t,n,...
method constructor (line 3141) | constructor(e){super(e),this.textures={}}
method load (line 3141) | load(e,t,n,i){const s=this,r=new $t(s.manager);r.setPath(s.path),r.set...
method parse (line 3141) | parse(e){const t=this.textures;function n(s){return t[s]===void 0&&con...
method setTextures (line 3141) | setTextures(e){return this.textures=e,this}
method createMaterialFromType (line 3141) | static createMaterialFromType(e){const t={ShadowMaterial:zp,SpriteMate...
class sn (line 3141) | class sn{static decodeText(e){if(typeof TextDecoder!="undefined")return ...
method decodeText (line 3141) | static decodeText(e){if(typeof TextDecoder!="undefined")return new Tex...
method extractUrlBase (line 3141) | static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./"...
method resolveURL (line 3141) | static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:...
class Qp (line 3141) | class Qp extends Xe{constructor(){super(),this.isInstancedBufferGeometry...
method constructor (line 3141) | constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="Ins...
method copy (line 3141) | copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
method toJSON (line 3141) | toJSON(){const e=super.toJSON(this);return e.instanceCount=this.instan...
class em (line 3141) | class em extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=new $t(s.manager);r.setPath(s.path),r.set...
method parse (line 3141) | parse(e){const t={},n={};function i(d,p){if(t[p]!==void 0)return t[p];...
class tm (line 3141) | class tm extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=this.path===""?sn.extractUrlBase(e):this....
method loadAsync (line 3141) | async loadAsync(e,t){const n=this,i=this.path===""?sn.extractUrlBase(e...
method parse (line 3141) | parse(e,t){const n=this.parseAnimations(e.animations),i=this.parseShap...
method parseAsync (line 3141) | async parseAsync(e){const t=this.parseAnimations(e.animations),n=this....
method parseShapes (line 3141) | parseShapes(e){const t={};if(e!==void 0)for(let n=0,i=e.length;n<i;n++...
method parseSkeletons (line 3141) | parseSkeletons(e,t){const n={},i={};if(t.traverse(function(s){s.isBone...
method parseGeometries (line 3141) | parseGeometries(e,t){const n={};if(e!==void 0){const i=new em;for(let ...
method parseMaterials (line 3141) | parseMaterials(e,t){const n={},i={};if(e!==void 0){const s=new Fl;s.se...
method parseAnimations (line 3141) | parseAnimations(e){const t={};if(e!==void 0)for(let n=0;n<e.length;n++...
method parseImages (line 3141) | parseImages(e,t){const n=this,i={};let s;function r(l){return n.manage...
method parseImagesAsync (line 3141) | async parseImagesAsync(e){const t=this,n={};let i;async function s(r){...
method parseTextures (line 3141) | parseTextures(e,t){function n(s,r){return typeof s=="number"?s:(consol...
method parseObject (line 3141) | parseObject(e,t,n,i,s){let r;function o(f){return t[f]===void 0&&conso...
method bindSkeletons (line 3141) | bindSkeletons(e,t){Object.keys(t).length!==0&&e.traverse(function(n){i...
class nm (line 3141) | class nm extends Xt{constructor(e){super(e),this.isImageBitmapLoader=!0,...
method constructor (line 3141) | constructor(e){super(e),this.isImageBitmapLoader=!0,typeof createImage...
method setOptions (line 3141) | setOptions(e){return this.options=e,this}
method load (line 3141) | load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e...
class kb (line 3141) | class kb extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3141) | constructor(e){super(e)}
method load (line 3141) | load(e,t,n,i){const s=this,r=new $t(this.manager);r.setResponseType("a...
class Ob (line 3141) | class Ob extends Dl{constructor(e,t,n=1){super(void 0,n),this.isHemisphe...
method constructor (line 3141) | constructor(e,t,n=1){super(void 0,n),this.isHemisphereLightProbe=!0;co...
class Bb (line 3141) | class Bb extends Dl{constructor(e,t=1){super(void 0,t),this.isAmbientLig...
method constructor (line 3141) | constructor(e,t=1){super(void 0,t),this.isAmbientLightProbe=!0;const n...
class zb (line 3141) | class zb{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSe...
method constructor (line 3141) | constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,...
method update (line 3141) | update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.a...
class $u (line 3141) | class $u{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTim...
method constructor (line 3141) | constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,thi...
method start (line 3141) | start(){this.startTime=If(),this.oldTime=this.startTime,this.elapsedTi...
method stop (line 3141) | stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}
method getElapsedTime (line 3141) | getElapsedTime(){return this.getDelta(),this.elapsedTime}
method getDelta (line 3141) | getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(...
function If (line 3141) | function If(){return(typeof performance=="undefined"?Date:performance).n...
class Gb (line 3141) | class Gb extends pt{constructor(){super(),this.type="AudioListener",this...
method constructor (line 3141) | constructor(){super(),this.type="AudioListener",this.context=Ju.getCon...
method getInput (line 3141) | getInput(){return this.gain}
method removeFilter (line 3141) | removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.f...
method getFilter (line 3141) | getFilter(){return this.filter}
method setFilter (line 3141) | setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filt...
method getMasterVolume (line 3141) | getMasterVolume(){return this.gain.gain.value}
method setMasterVolume (line 3141) | setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.contex...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.l...
class im (line 3141) | class im extends pt{constructor(e){super(),this.type="Audio",this.listen...
method constructor (line 3141) | constructor(e){super(),this.type="Audio",this.listener=e,this.context=...
method getOutput (line 3141) | getOutput(){return this.gain}
method setNodeSource (line 3141) | setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="au...
method setMediaElementSource (line 3141) | setMediaElementSource(e){return this.hasPlaybackControl=!1,this.source...
method setMediaStreamSource (line 3141) | setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceT...
method setBuffer (line 3141) | setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autopl...
method play (line 3141) | play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is ...
method pause (line 3141) | pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: th...
method stop (line 3141) | stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: thi...
method connect (line 3141) | connect(){if(this.filters.length>0){this.source.connect(this.filters[0...
method disconnect (line 3141) | disconnect(){if(this.filters.length>0){this.source.disconnect(this.fil...
method getFilters (line 3141) | getFilters(){return this.filters}
method setFilters (line 3141) | setFilters(e){return e||(e=[]),this._connected===!0?(this.disconnect()...
method setDetune (line 3141) | setDetune(e){if(this.detune=e,this.source.detune!==void 0)return this....
method getDetune (line 3141) | getDetune(){return this.detune}
method getFilter (line 3141) | getFilter(){return this.getFilters()[0]}
method setFilter (line 3141) | setFilter(e){return this.setFilters(e?[e]:[])}
method setPlaybackRate (line 3141) | setPlaybackRate(e){if(this.hasPlaybackControl===!1){console.warn("THRE...
method getPlaybackRate (line 3141) | getPlaybackRate(){return this.playbackRate}
method onEnded (line 3141) | onEnded(){this.isPlaying=!1}
method getLoop (line 3141) | getLoop(){return this.hasPlaybackControl===!1?(console.warn("THREE.Aud...
method setLoop (line 3141) | setLoop(e){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio:...
method setLoopStart (line 3141) | setLoopStart(e){return this.loopStart=e,this}
method setLoopEnd (line 3141) | setLoopEnd(e){return this.loopEnd=e,this}
method getVolume (line 3141) | getVolume(){return this.gain.gain.value}
method setVolume (line 3141) | setVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.curr...
class Hb (line 3141) | class Hb extends im{constructor(e){super(e),this.panner=this.context.cre...
method constructor (line 3141) | constructor(e){super(e),this.panner=this.context.createPanner(),this.p...
method disconnect (line 3141) | disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}
method getOutput (line 3141) | getOutput(){return this.panner}
method getRefDistance (line 3141) | getRefDistance(){return this.panner.refDistance}
method setRefDistance (line 3141) | setRefDistance(e){return this.panner.refDistance=e,this}
method getRolloffFactor (line 3141) | getRolloffFactor(){return this.panner.rolloffFactor}
method setRolloffFactor (line 3141) | setRolloffFactor(e){return this.panner.rolloffFactor=e,this}
method getDistanceModel (line 3141) | getDistanceModel(){return this.panner.distanceModel}
method setDistanceModel (line 3141) | setDistanceModel(e){return this.panner.distanceModel=e,this}
method getMaxDistance (line 3141) | getMaxDistance(){return this.panner.maxDistance}
method setMaxDistance (line 3141) | setMaxDistance(e){return this.panner.maxDistance=e,this}
method setDirectionalCone (line 3141) | setDirectionalCone(e,t,n){return this.panner.coneInnerAngle=e,this.pan...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){if(super.updateMatrixWorld(e),this.hasPlaybackCon...
class Wb (line 3141) | class Wb{constructor(e,t=2048){this.analyser=e.context.createAnalyser(),...
method constructor (line 3141) | constructor(e,t=2048){this.analyser=e.context.createAnalyser(),this.an...
method getFrequencyData (line 3141) | getFrequencyData(){return this.analyser.getByteFrequencyData(this.data...
method getAverageFrequency (line 3141) | getAverageFrequency(){let e=0;const t=this.getFrequencyData();for(let ...
class sm (line 3141) | class sm{constructor(e,t,n){this.binding=e,this.valueSize=n;let i,s,r;sw...
method constructor (line 3141) | constructor(e,t,n){this.binding=e,this.valueSize=n;let i,s,r;switch(t)...
method accumulate (line 3141) | accumulate(e,t){const n=this.buffer,i=this.valueSize,s=e*i+i;let r=thi...
method accumulateAdditive (line 3141) | accumulateAdditive(e){const t=this.buffer,n=this.valueSize,i=n*this._a...
method apply (line 3141) | apply(e){const t=this.valueSize,n=this.buffer,i=e*t+t,s=this.cumulativ...
method saveOriginalState (line 3141) | saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSiz...
method restoreOriginalState (line 3141) | restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(...
method _setAdditiveIdentityNumeric (line 3141) | _setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=...
method _setAdditiveIdentityQuaternion (line 3141) | _setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),th...
method _setAdditiveIdentityOther (line 3141) | _setAdditiveIdentityOther(){const e=this._origIndex*this.valueSize,t=t...
method _select (line 3141) | _select(e,t,n,i,s){if(i>=.5)for(let r=0;r!==s;++r)e[t+r]=e[n+r]}
method _slerp (line 3141) | _slerp(e,t,n,i){Bt.slerpFlat(e,t,e,t,e,n,i)}
method _slerpAdditive (line 3141) | _slerpAdditive(e,t,n,i,s){const r=this._workIndex*s;Bt.multiplyQuatern...
method _lerp (line 3141) | _lerp(e,t,n,i,s){const r=1-i;for(let o=0;o!==s;++o){const l=t+o;e[l]=e...
method _lerpAdditive (line 3141) | _lerpAdditive(e,t,n,i,s){for(let r=0;r!==s;++r){const o=t+r;e[o]=e[o]+...
class Qb (line 3141) | class Qb{constructor(e,t,n){const i=n||rt.parseTrackName(t);this._target...
method constructor (line 3141) | constructor(e,t,n){const i=n||rt.parseTrackName(t);this._targetGroup=e...
method getValue (line 3141) | getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,i=...
method setValue (line 3141) | setValue(e,t){const n=this._bindings;for(let i=this._targetGroup.nCach...
method bind (line 3141) | bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjec...
method unbind (line 3141) | unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObj...
class rt (line 3141) | class rt{constructor(e,t,n){this.path=t,this.parsedPath=n||rt.parseTrack...
method constructor (line 3141) | constructor(e,t,n){this.path=t,this.parsedPath=n||rt.parseTrackName(t)...
method create (line 3141) | static create(e,t,n){return e&&e.isAnimationObjectGroup?new rt.Composi...
method sanitizeNodeName (line 3141) | static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(qb,"")}
method parseTrackName (line 3141) | static parseTrackName(e){const t=Jb.exec(e);if(t===null)throw new Erro...
method findNode (line 3141) | static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.nam...
method _getValue_unavailable (line 3141) | _getValue_unavailable(){}
method _setValue_unavailable (line 3141) | _setValue_unavailable(){}
method _getValue_direct (line 3141) | _getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}
method _getValue_array (line 3141) | _getValue_array(e,t){const n=this.resolvedProperty;for(let i=0,s=n.len...
method _getValue_arrayElement (line 3141) | _getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIn...
method _getValue_toArray (line 3141) | _getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}
method _setValue_direct (line 3141) | _setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}
method _setValue_direct_setNeedsUpdate (line 3141) | _setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyNa...
method _setValue_direct_setMatrixWorldNeedsUpdate (line 3141) | _setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this...
method _setValue_array (line 3141) | _setValue_array(e,t){const n=this.resolvedProperty;for(let i=0,s=n.len...
method _setValue_array_setNeedsUpdate (line 3141) | _setValue_array_setNeedsUpdate(e,t){const n=this.resolvedProperty;for(...
method _setValue_array_setMatrixWorldNeedsUpdate (line 3141) | _setValue_array_setMatrixWorldNeedsUpdate(e,t){const n=this.resolvedPr...
method _setValue_arrayElement (line 3141) | _setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=...
method _setValue_arrayElement_setNeedsUpdate (line 3141) | _setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this....
method _setValue_arrayElement_setMatrixWorldNeedsUpdate (line 3141) | _setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedPro...
method _setValue_fromArray (line 3141) | _setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}
method _setValue_fromArray_setNeedsUpdate (line 3141) | _setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArra...
method _setValue_fromArray_setMatrixWorldNeedsUpdate (line 3141) | _setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProper...
method _getValue_unbound (line 3141) | _getValue_unbound(e,t){this.bind(),this.getValue(e,t)}
method _setValue_unbound (line 3141) | _setValue_unbound(e,t){this.bind(),this.setValue(e,t)}
method bind (line 3141) | bind(){let e=this.node;const t=this.parsedPath,n=t.objectName,i=t.prop...
method unbind (line 3141) | unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setV...
class ew (line 3141) | class ew{constructor(){this.isAnimationObjectGroup=!0,this.uuid=En(),thi...
method constructor (line 3141) | constructor(){this.isAnimationObjectGroup=!0,this.uuid=En(),this._obje...
method add (line 3141) | add(){const e=this._objects,t=this._indicesByUUID,n=this._paths,i=this...
method remove (line 3141) | remove(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,...
method uncache (line 3141) | uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings...
method subscribe_ (line 3141) | subscribe_(e,t){const n=this._bindingsIndicesByPath;let i=n[e];const s...
method unsubscribe_ (line 3141) | unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(n!==void...
class tw (line 3141) | class tw{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=...
method constructor (line 3141) | constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this....
method play (line 3141) | play(){return this._mixer._activateAction(this),this}
method stop (line 3141) | stop(){return this._mixer._deactivateAction(this),this.reset()}
method reset (line 3141) | reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCo...
method isRunning (line 3141) | isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&thi...
method isScheduled (line 3141) | isScheduled(){return this._mixer._isActiveAction(this)}
method startAt (line 3141) | startAt(e){return this._startTime=e,this}
method setLoop (line 3141) | setLoop(e,t){return this.loop=e,this.repetitions=t,this}
method setEffectiveWeight (line 3141) | setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this....
method getEffectiveWeight (line 3141) | getEffectiveWeight(){return this._effectiveWeight}
method fadeIn (line 3141) | fadeIn(e){return this._scheduleFading(e,0,1)}
method fadeOut (line 3141) | fadeOut(e){return this._scheduleFading(e,1,0)}
method crossFadeFrom (line 3141) | crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){const i=this._c...
method crossFadeTo (line 3141) | crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}
method stopFading (line 3141) | stopFading(){const e=this._weightInterpolant;return e!==null&&(this._w...
method setEffectiveTimeScale (line 3141) | setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeSc...
method getEffectiveTimeScale (line 3141) | getEffectiveTimeScale(){return this._effectiveTimeScale}
method setDuration (line 3141) | setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWa...
method syncWith (line 3141) | syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.st...
method halt (line 3141) | halt(e){return this.warp(this._effectiveTimeScale,0,e)}
method warp (line 3141) | warp(e,t,n){const i=this._mixer,s=i.time,r=this.timeScale;let o=this._...
method stopWarping (line 3141) | stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(thi...
method getMixer (line 3141) | getMixer(){return this._mixer}
method getClip (line 3141) | getClip(){return this._clip}
method getRoot (line 3141) | getRoot(){return this._localRoot||this._mixer._root}
method _update (line 3141) | _update(e,t,n,i){if(!this.enabled){this._updateWeight(e);return}const ...
method _updateWeight (line 3141) | _updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._...
method _updateTimeScale (line 3141) | _updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=...
method _updateTime (line 3141) | _updateTime(e){const t=this._clip.duration,n=this.loop;let i=this.time...
method _setEndings (line 3141) | _setEndings(e,t,n){const i=this._interpolantSettings;n?(i.endingStart=...
method _scheduleFading (line 3141) | _scheduleFading(e,t,n){const i=this._mixer,s=i.time;let r=this._weight...
class Qa (line 3141) | class Qa extends ai{constructor(e){super(),this._root=e,this._initMemory...
method constructor (line 3141) | constructor(e){super(),this._root=e,this._initMemoryManager(),this._ac...
method _bindAction (line 3141) | _bindAction(e,t){const n=e._localRoot||this._root,i=e._clip.tracks,s=i...
method _activateAction (line 3141) | _activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===nul...
method _deactivateAction (line 3141) | _deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBi...
method _initMemoryManager (line 3141) | _initMemoryManager(){this._actions=[],this._nActiveActions=0,this._act...
method _isActiveAction (line 3141) | _isActiveAction(e){const t=e._cacheIndex;return t!==null&&t<this._nAct...
method _addInactiveAction (line 3141) | _addInactiveAction(e,t,n){const i=this._actions,s=this._actionsByClip;...
method _removeInactiveAction (line 3141) | _removeInactiveAction(e){const t=this._actions,n=t[t.length-1],i=e._ca...
method _removeInactiveBindingsForAction (line 3141) | _removeInactiveBindingsForAction(e){const t=e._propertyBindings;for(le...
method _lendAction (line 3141) | _lendAction(e){const t=this._actions,n=e._cacheIndex,i=this._nActiveAc...
method _takeBackAction (line 3141) | _takeBackAction(e){const t=this._actions,n=e._cacheIndex,i=--this._nAc...
method _addInactiveBinding (line 3141) | _addInactiveBinding(e,t,n){const i=this._bindingsByRootAndName,s=this....
method _removeInactiveBinding (line 3141) | _removeInactiveBinding(e){const t=this._bindings,n=e.binding,i=n.rootN...
method _lendBinding (line 3141) | _lendBinding(e){const t=this._bindings,n=e._cacheIndex,i=this._nActive...
method _takeBackBinding (line 3141) | _takeBackBinding(e){const t=this._bindings,n=e._cacheIndex,i=--this._n...
method _lendControlInterpolant (line 3141) | _lendControlInterpolant(){const e=this._controlInterpolants,t=this._nA...
method _takeBackControlInterpolant (line 3141) | _takeBackControlInterpolant(e){const t=this._controlInterpolants,n=e._...
method clipAction (line 3141) | clipAction(e,t,n){const i=t||this._root,s=i.uuid;let r=typeof e=="stri...
method existingAction (line 3141) | existingAction(e,t){const n=t||this._root,i=n.uuid,s=typeof e=="string...
method stopAllAction (line 3141) | stopAllAction(){const e=this._actions,t=this._nActiveActions;for(let n...
method update (line 3141) | update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActio...
method setTime (line 3141) | setTime(e){this.time=0;for(let t=0;t<this._actions.length;t++)this._ac...
method getRoot (line 3141) | getRoot(){return this._root}
method uncacheClip (line 3141) | uncacheClip(e){const t=this._actions,n=e.uuid,i=this._actionsByClip,s=...
method uncacheRoot (line 3141) | uncacheRoot(e){const t=e.uuid,n=this._actionsByClip;for(const r in n){...
method uncacheAction (line 3141) | uncacheAction(e,t){const n=this.existingAction(e,t);n!==null&&(this._d...
class th (line 3141) | class th{constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform...
method constructor (line 3141) | constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform: Type ...
method clone (line 3141) | clone(){return new th(this.value.clone===void 0?this.value:this.value....
class sw (line 3141) | class sw extends ai{constructor(){super(),this.isUniformsGroup=!0,Object...
method constructor (line 3141) | constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(th...
method add (line 3141) | add(e){return this.uniforms.push(e),this}
method remove (line 3141) | remove(e){const t=this.uniforms.indexOf(e);return t!==-1&&this.uniform...
method setName (line 3141) | setName(e){return this.name=e,this}
method setUsage (line 3141) | setUsage(e){return this.usage=e,this}
method dispose (line 3141) | dispose(){return this.dispatchEvent({type:"dispose"}),this}
method copy (line 3141) | copy(e){this.name=e.name,this.usage=e.usage;const t=e.uniforms;this.un...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
class rw (line 3141) | class rw extends Ho{constructor(e,t,n=1){super(e,t),this.isInstancedInte...
method constructor (line 3141) | constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,t...
method copy (line 3141) | copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,...
method clone (line 3141) | clone(e){const t=super.clone(e);return t.meshPerAttribute=this.meshPer...
method toJSON (line 3141) | toJSON(e){const t=super.toJSON(e);return t.isInstancedInterleavedBuffe...
class ow (line 3141) | class ow{constructor(e,t,n,i,s){this.isGLBufferAttribute=!0,this.buffer=...
method constructor (line 3141) | constructor(e,t,n,i,s){this.isGLBufferAttribute=!0,this.buffer=e,this....
method needsUpdate (line 3141) | set needsUpdate(e){e===!0&&this.version++}
method setBuffer (line 3141) | setBuffer(e){return this.buffer=e,this}
method setType (line 3141) | setType(e,t){return this.type=e,this.elementSize=t,this}
method setItemSize (line 3141) | setItemSize(e){return this.itemSize=e,this}
method setCount (line 3141) | setCount(e){return this.count=e,this}
class rm (line 3141) | class rm{constructor(e,t,n=0,i=1/0){this.ray=new Go(e,t),this.near=n,thi...
method constructor (line 3141) | constructor(e,t,n=0,i=1/0){this.ray=new Go(e,t),this.near=n,this.far=i...
method set (line 3141) | set(e,t){this.ray.set(e,t)}
method setFromCamera (line 3141) | setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatri...
method intersectObject (line 3141) | intersectObject(e,t=!0,n=[]){return cu(e,this,n,t),n.sort(Ff),n}
method intersectObjects (line 3141) | intersectObjects(e,t=!0,n=[]){for(let i=0,s=e.length;i<s;i++)cu(e[i],t...
function Ff (line 3141) | function Ff(a,e){return a.distance-e.distance}
function cu (line 3141) | function cu(a,e,t,n){if(a.layers.test(e.layers)&&a.raycast(e,t),n===!0){...
class uu (line 3141) | class uu{constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.t...
method constructor (line 3141) | constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.theta=n,...
method set (line 3141) | set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}
method copy (line 3141) | copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,...
method makeSafe (line 3141) | makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.ph...
method setFromVector3 (line 3141) | setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}
method setFromCartesianCoords (line 3141) | setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
class aw (line 3141) | class aw{constructor(e=1,t=0,n=0){return this.radius=e,this.theta=t,this...
method constructor (line 3141) | constructor(e=1,t=0,n=0){return this.radius=e,this.theta=t,this.y=n,this}
method set (line 3141) | set(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}
method copy (line 3141) | copy(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}
method setFromVector3 (line 3141) | setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}
method setFromCartesianCoords (line 3141) | setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+n*n),th...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
class lw (line 3141) | class lw{constructor(e=new fe(1/0,1/0),t=new fe(-1/0,-1/0)){this.isBox2=...
method constructor (line 3141) | constructor(e=new fe(1/0,1/0),t=new fe(-1/0,-1/0)){this.isBox2=!0,this...
method set (line 3141) | set(e,t){return this.min.copy(e),this.max.copy(t),this}
method setFromPoints (line 3141) | setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this....
method setFromCenterAndSize (line 3141) | setFromCenterAndSize(e,t){const n=Nf.copy(t).multiplyScalar(.5);return...
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
method copy (line 3141) | copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}
method makeEmpty (line 3141) | makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/...
method isEmpty (line 3141) | isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}
method getCenter (line 3141) | getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,th...
method getSize (line 3141) | getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this...
method expandByPoint (line 3141) | expandByPoint(e){return this.min.min(e),this.max.max(e),this}
method expandByVector (line 3141) | expandByVector(e){return this.min.sub(e),this.max.add(e),this}
method expandByScalar (line 3141) | expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),...
method containsPoint (line 3141) | containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min....
method containsBox (line 3141) | containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.m...
method getParameter (line 3141) | getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x...
method intersectsBox (line 3141) | intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max...
method clampPoint (line 3141) | clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}
method distanceToPoint (line 3141) | distanceToPoint(e){return Nf.copy(e).clamp(this.min,this.max).sub(e).l...
method intersect (line 3141) | intersect(e){return this.min.max(e.min),this.max.min(e.max),this}
method union (line 3141) | union(e){return this.min.min(e.min),this.max.max(e.max),this}
method translate (line 3141) | translate(e){return this.min.add(e),this.max.add(e),this}
method equals (line 3141) | equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}
class cw (line 3141) | class cw{constructor(e=new I,t=new I){this.start=e,this.end=t}set(e,t){r...
method constructor (line 3141) | constructor(e=new I,t=new I){this.start=e,this.end=t}
method set (line 3141) | set(e,t){return this.start.copy(e),this.end.copy(t),this}
method copy (line 3141) | copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}
method getCenter (line 3141) | getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}
method delta (line 3141) | delta(e){return e.subVectors(this.end,this.start)}
method distanceSq (line 3141) | distanceSq(){return this.start.distanceToSquared(this.end)}
method distance (line 3141) | distance(){return this.start.distanceTo(this.end)}
method at (line 3141) | at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}
method closestPointToPointParameter (line 3141) | closestPointToPointParameter(e,t){kf.subVectors(e,this.start),Ba.subVe...
method closestPointToPoint (line 3141) | closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e...
method applyMatrix4 (line 3141) | applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix...
method equals (line 3141) | equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}
method clone (line 3141) | clone(){return new this.constructor().copy(this)}
class uw (line 3141) | class uw extends pt{constructor(e,t){super(),this.light=e,this.light.upd...
method constructor (line 3141) | constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),t...
method dispose (line 3141) | dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}
method update (line 3141) | update(){this.light.updateMatrixWorld();const e=this.light.distance?th...
class hw (line 3141) | class hw extends wn{constructor(e){const t=om(e),n=new Xe,i=[],s=[],r=ne...
method constructor (line 3141) | constructor(e){const t=om(e),n=new Xe,i=[],s=[],r=new we(0,0,1),o=new ...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){const t=this.bones,n=this.geometry,i=n.getAttribu...
function om (line 3141) | function om(a){const e=[];a.isBone===!0&&e.push(a);for(let t=0;t<a.child...
class fw (line 3141) | class fw extends Rt{constructor(e,t,n){const i=new ks(t,4,2),s=new ln({w...
method constructor (line 3141) | constructor(e,t,n){const i=new ks(t,4,2),s=new ln({wireframe:!0,fog:!1...
method dispose (line 3141) | dispose(){this.geometry.dispose(),this.material.dispose()}
method update (line 3141) | update(){this.color!==void 0?this.material.color.set(this.color):this....
class pw (line 3141) | class pw extends pt{constructor(e,t,n){super(),this.light=e,this.light.u...
method constructor (line 3141) | constructor(e,t,n){super(),this.light=e,this.light.updateMatrixWorld()...
method dispose (line 3141) | dispose(){this.children[0].geometry.dispose(),this.children[0].materia...
method update (line 3141) | update(){const e=this.children[0];if(this.color!==void 0)this.material...
class am (line 3141) | class am extends wn{constructor(e=10,t=10,n=4473924,i=8947848){n=new we(...
method constructor (line 3141) | constructor(e=10,t=10,n=4473924,i=8947848){n=new we(n),i=new we(i);con...
class mw (line 3141) | class mw extends wn{constructor(e=10,t=16,n=8,i=64,s=4473924,r=8947848){...
method constructor (line 3141) | constructor(e=10,t=16,n=8,i=64,s=4473924,r=8947848){s=new we(s),r=new ...
class gw (line 3141) | class gw extends pt{constructor(e,t,n){super(),this.light=e,this.light.u...
method constructor (line 3141) | constructor(e,t,n){super(),this.light=e,this.light.updateMatrixWorld()...
method dispose (line 3141) | dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material....
method update (line 3141) | update(){Uf.setFromMatrixPosition(this.light.matrixWorld),Ua.setFromMa...
class yw (line 3141) | class yw extends wn{constructor(e){const t=new Xe,n=new qt({color:167772...
method constructor (line 3141) | constructor(e){const t=new Xe,n=new qt({color:16777215,vertexColors:!0...
method setColors (line 3141) | setColors(e,t,n,i,s){const o=this.geometry.getAttribute("color");o.set...
method update (line 3141) | update(){const e=this.geometry,t=this.pointMap,n=1,i=1;kt.projectionMa...
method dispose (line 3141) | dispose(){this.geometry.dispose(),this.material.dispose()}
function zt (line 3141) | function zt(a,e,t,n,i,s,r){Ga.set(i,s,r).unproject(n);const o=e[a];if(o!...
class xw (line 3141) | class xw extends wn{constructor(e,t=16776960){const n=new Uint16Array([0...
method constructor (line 3141) | constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5...
method update (line 3141) | update(e){if(e!==void 0&&console.warn("THREE.BoxHelper: .update() has ...
method setFromObject (line 3141) | setFromObject(e){return this.object=e,this.update(),this}
method copy (line 3141) | copy(e,t){return super.copy(e,t),this.object=e.object,this}
class vw (line 3141) | class vw extends wn{constructor(e,t=16776960){const n=new Uint16Array([0...
method constructor (line 3141) | constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){const t=this.box;t.isEmpty()||(t.getCenter(this.p...
class _w (line 3141) | class _w extends jn{constructor(e,t=1,n=16776960){const i=n,s=[1,-1,0,-1...
method constructor (line 3141) | constructor(e,t=1,n=16776960){const i=n,s=[1,-1,0,-1,1,0,-1,-1,0,1,1,0...
method updateMatrixWorld (line 3141) | updateMatrixWorld(e){this.position.set(0,0,0),this.scale.set(.5*this.s...
class bw (line 3141) | class bw extends pt{constructor(e=new I(0,0,1),t=new I(0,0,0),n=1,i=1677...
method constructor (line 3141) | constructor(e=new I(0,0,1),t=new I(0,0,0),n=1,i=16776960,s=n*.2,r=s*.2...
method setDirection (line 3141) | setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y...
method setLength (line 3141) | setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1)...
method setColor (line 3141) | setColor(e){this.line.material.color.set(e),this.cone.material.color.s...
method copy (line 3141) | copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(...
class lm (line 3141) | class lm extends wn{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,...
method constructor (line 3141) | constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,...
method setColors (line 3141) | setColors(e,t,n){const i=new we,s=this.geometry.attributes.color.array...
method dispose (line 3141) | dispose(){this.geometry.dispose(),this.material.dispose()}
class ww (line 3141) | class ww{constructor(){this.type="ShapePath",this.color=new we,this.subP...
method constructor (line 3141) | constructor(){this.type="ShapePath",this.color=new we,this.subPaths=[]...
method moveTo (line 3141) | moveTo(e,t){return this.currentPath=new Lo,this.subPaths.push(this.cur...
method lineTo (line 3141) | lineTo(e,t){return this.currentPath.lineTo(e,t),this}
method quadraticCurveTo (line 3141) | quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t...
method bezierCurveTo (line 3141) | bezierCurveTo(e,t,n,i,s,r){return this.currentPath.bezierCurveTo(e,t,n...
method splineThru (line 3141) | splineThru(e){return this.currentPath.splineThru(e),this}
method toShapes (line 3141) | toShapes(e,t){function n(x){const b=[];for(let v=0,M=x.length;v<M;v++)...
function Mw (line 3141) | function Mw(){const a=new ArrayBuffer(4),e=new Float32Array(a),t=new Uin...
function Sw (line 3141) | function Sw(a){Math.abs(a)>65504&&console.warn("THREE.DataUtils.toHalfFl...
function Tw (line 3141) | function Tw(a){const e=a>>10;return yi.uint32View[0]=yi.mantissaTable[yi...
class Ew (line 3141) | class Ew extends Xe{constructor(){console.error("THREE.ParametricGeometr...
method constructor (line 3141) | constructor(){console.error("THREE.ParametricGeometry has been moved t...
class Cw (line 3141) | class Cw extends Xe{constructor(){console.error("THREE.TextGeometry has ...
method constructor (line 3141) | constructor(){console.error("THREE.TextGeometry has been moved to /exa...
function Lw (line 3141) | function Lw(){console.error("THREE.FontLoader has been moved to /example...
function Rw (line 3141) | function Rw(){console.error("THREE.Font has been moved to /examples/jsm/...
function Iw (line 3141) | function Iw(){console.error("THREE.ImmediateRenderObject has been remove...
class Pw (line 3141) | class Pw extends zn{constructor(e,t,n){console.error('THREE.WebGLMultisa...
method constructor (line 3141) | constructor(e,t,n){console.error('THREE.WebGLMultisampleRenderTarget h...
class Dw (line 3141) | class Dw extends Uo{constructor(e,t,n,i){console.warn("THREE.DataTexture...
method constructor (line 3141) | constructor(e,t,n,i){console.warn("THREE.DataTexture2DArray has been r...
class Fw (line 3141) | class Fw extends vl{constructor(e,t,n,i){console.warn("THREE.DataTexture...
method constructor (line 3141) | constructor(e,t,n,i){console.warn("THREE.DataTexture3D has been rename...
class kw (line 3141) | class kw extends ai{constructor(e,t){super(),t===void 0&&console.warn('T...
method constructor (line 3141) | constructor(e,t){super(),t===void 0&&console.warn('THREE.OrbitControls...
function t (line 3141) | function t(h){return e.appendChild(h.dom),h}
function n (line 3141) | function n(h){for(var u=0;u<e.children.length;u++)e.children[u].style.di...
function ch (line 3146) | function ch(a,e){return!e&&typeof a=="function"&&(e=a,a={}),this.ondata=...
function a (line 3146) | function a(e,t){!t&&typeof e=="function"&&(t=e,e={}),this.ondata=t,this....
function a (line 3146) | function a(e,t){Jr([Zr,function(){return[Un,ri]}],this,ch.call(this,e,t)...
function Lm (line 3146) | function Lm(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function Ko (line 3146) | function Ko(a,e){return qs(a,e||{},0,0)}
function a (line 3146) | function a(e){this.s={},this.p=new ut(0),this.ondata=e}
function a (line 3146) | function a(e){this.ondata=e,Jr([Yr,function(){return[Un,bn]}],this,0,fun...
function hh (line 3146) | function hh(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function $r (line 3146) | function $r(a,e){return Yo(a,e)}
function a (line 3146) | function a(e,t){this.c=jr(),this.l=0,this.v=1,ri.call(this,e,t)}
function a (line 3146) | function a(e,t){Jr([Zr,wm,function(){return[Un,ri,ll]}],this,ch.call(thi...
function Yf (line 3146) | function Yf(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function cl (line 3146) | function cl(a,e){e||(e={});var t=jr(),n=a.length;t.p(a);var i=qs(a,e,ah(...
function a (line 3146) | function a(e){this.v=1,bn.call(this,e)}
function a (line 3146) | function a(e){this.ondata=e,Jr([Yr,Mm,function(){return[Un,bn,ul]}],this...
function Im (line 3146) | function Im(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function hl (line 3146) | function hl(a,e){return Yo(a.subarray(oh(a),-8),e||new ut(Am(a)))}
function a (line 3146) | function a(e,t){this.c=ih(),this.v=1,ri.call(this,e,t)}
function a (line 3146) | function a(e,t){Jr([Zr,Sm,function(){return[Un,ri,mu]}],this,ch.call(thi...
function Uw (line 3146) | function Uw(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function gu (line 3146) | function gu(a,e){e||(e={});var t=ih();t.p(a);var n=qs(a,e,2,4);return lh...
function a (line 3146) | function a(e){this.v=1,bn.call(this,e)}
function a (line 3146) | function a(e){this.ondata=e,Jr([Yr,Tm,function(){return[Un,bn,fl]}],this...
function Dm (line 3146) | function Dm(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function ko (line 3146) | function ko(a,e){return Yo((Em(a),a.subarray(2,-4)),e)}
function a (line 3146) | function a(e){this.G=ul,this.I=bn,this.Z=fl,this.ondata=e}
function a (line 3146) | function a(e){this.G=Rm,this.I=uh,this.Z=Pm,this.ondata=e}
function Vw (line 3146) | function Vw(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function Hw (line 3146) | function Hw(a,e){return a[0]==31&&a[1]==139&&a[2]==8?hl(a,e):(a[0]&15)!=...
function a (line 3146) | function a(e){this.ondata=e,Nm?this.t=new TextDecoder:this.p=vi}
function a (line 3146) | function a(e){this.ondata=e}
function ts (line 3146) | function ts(a,e){if(e){for(var t=new ut(a.length),n=0;n<a.length;++n)t[n...
function dh (line 3146) | function dh(a,e){if(e){for(var t="",n=0;n<a.length;n+=16384)t+=String.fr...
function a (line 3146) | function a(e){this.filename=e,this.c=jr(),this.size=0,this.compression=0}
function a (line 3146) | function a(e,t){var n=this;t||(t={}),Oo.call(this,e),this.d=new ri(t,fun...
function a (line 3146) | function a(e,t){var n=this;t||(t={}),Oo.call(this,e),this.d=new Cm(t,fun...
function a (line 3146) | function a(e){this.ondata=e,this.u=[],this.d=1}
function Zw (line 3146) | function Zw(a,e,t){if(t||(t=e,e={}),typeof t!="function")throw"no callba...
function Kw (line 3146) | function Kw(a,e){e||(e={});var t={},n=[];fh(a,"",t,e);var i=0,s=0;for(va...
function a (line 3146) | function a(){}
function a (line 3146) | function a(){var e=this;this.i=new bn(function(t,n){e.ondata(null,t,n)})}
function a (line 3146) | function a(e,t){var n=this;t<32e4?this.i=new bn(function(i,s){n.ondata(n...
function a (line 3146) | function a(e){this.onfile=e,this.k=[],this.o={0:Gm},this.p=vi}
function eM (line 3146) | function eM(a,e){if(typeof e!="function")throw"no callback";for(var t=[]...
function tM (line 3146) | function tM(a){for(var e={},t=a.length-22;Ht(a,t)!=101010256;--t)if(!t||...
function Vm (line 3146) | function Vm(a,e,t){const n=t.length-a-1;if(e>=t[n])return n-1;if(e<=t[a]...
function iM (line 3146) | function iM(a,e,t,n){const i=[],s=[],r=[];i[0]=1;for(let o=1;o<=t;++o){s...
function sM (line 3146) | function sM(a,e,t,n){const i=Vm(a,n,e),s=iM(i,n,a,e),r=new dt(0,0,0,0);f...
function rM (line 3146) | function rM(a,e,t,n,i){const s=[];for(let u=0;u<=t;++u)s[u]=0;const r=[]...
function oM (line 3146) | function oM(a,e,t,n,i){const s=i<a?i:a,r=[],o=Vm(a,n,e),l=rM(o,n,a,s,e),...
function aM (line 3146) | function aM(a,e){let t=1;for(let i=2;i<=a;++i)t*=i;let n=1;for(let i=2;i...
function lM (line 3146) | function lM(a){const e=a.length,t=[],n=[];for(let s=0;s<e;++s){const r=a...
function cM (line 3146) | function cM(a,e,t,n,i){const s=oM(a,e,t,n,i);return lM(s)}
class Kf (line 3146) | class Kf extends Gn{constructor(e,t,n,i,s){super(),this.degree=e,this.kn...
method constructor (line 3146) | constructor(e,t,n,i,s){super(),this.degree=e,this.knots=t,this.control...
method getPoint (line 3146) | getPoint(e,t=new I){const n=t,i=this.knots[this.startKnot]+e*(this.kno...
method getTangent (line 3146) | getTangent(e,t=new I){const n=t,i=this.knots[0]+e*(this.knots[this.kno...
class uM (line 3146) | class uM extends Xt{constructor(e){super(e)}load(e,t,n,i){const s=this,r...
method constructor (line 3146) | constructor(e){super(e)}
method load (line 3146) | load(e,t,n,i){const s=this,r=s.path===""?sn.extractUrlBase(e):s.path,o...
method parse (line 3146) | parse(e,t){if(gM(e))lt=new mM().parse(e);else{const i=Xm(e);if(!yM(i))...
class hM (line 3146) | class hM{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){Ut...
method constructor (line 3146) | constructor(e,t){this.textureLoader=e,this.manager=t}
method parse (line 3146) | parse(){Ut=this.parseConnections();const e=this.parseImages(),t=this.p...
method parseConnections (line 3146) | parseConnections(){const e=new Map;return"Connections"in lt&<.Connec...
method parseImages (line 3146) | parseImages(){const e={},t={};if("Video"in lt.Objects){const n=lt.Obje...
method parseImage (line 3146) | parseImage(e){const t=e.Content,n=e.RelativeFilename||e.Filename,i=n.s...
method parseTextures (line 3146) | parseTextures(e){const t=new Map;if("Texture"in lt.Objects){const n=lt...
method parseTexture (line 3146) | parseTexture(e,t){const n=this.loadTexture(e,t);n.ID=e.id,n.name=e.att...
method loadTexture (line 3146) | loadTexture(e,t){let n;const i=this.textureLoader.path,s=Ut.get(e.id)....
method parseMaterials (line 3146) | parseMaterials(e){const t=new Map;if("Material"in lt.Objects){const n=...
method parseMaterial (line 3146) | parseMaterial(e,t){const n=e.id,i=e.attrName;let s=e.ShadingModel;if(t...
method parseParameters (line 3146) | parseParameters(e,t,n){const i={};e.BumpFactor&&(i.bumpScale=e.BumpFac...
method getTexture (line 3146) | getTexture(e,t){return"LayeredTexture"in lt.Objects&&t in lt.Objects.L...
method parseDeformers (line 3146) | parseDeformers(){const e={},t={};if("Deformer"in lt.Objects){const n=l...
method parseSkeleton (line 3146) | parseSkeleton(e,t){const n=[];return e.children.forEach(function(i){co...
method parseMorphTargets (line 3146) | parseMorphTargets(e,t){const n=[];for(let i=0;i<e.children.length;i++)...
method parseScene (line 3146) | parseScene(e,t,n){_n=new pn;const i=this.parseModels(e.skeletons,t,n),...
method parseModels (line 3146) | parseModels(e,t,n){const i=new Map,s=lt.Objects.Model;for(const r in s...
method buildSkeleton (line 3146) | buildSkeleton(e,t,n,i){let s=null;return e.parents.forEach(function(r)...
method createCamera (line 3146) | createCamera(e){let t,n;if(e.children.forEach(function(i){const s=lt.O...
method createLight (line 3146) | createLight(e){let t,n;if(e.children.forEach(function(i){const s=lt.Ob...
method createMesh (line 3146) | createMesh(e,t,n){let i,s=null,r=null;const o=[];return e.children.for...
method createCurve (line 3146) | createCurve(e,t){const n=e.children.reduce(function(s,r){return t.has(...
method getTransformData (line 3146) | getTransformData(e,t){const n={};"InheritType"in t&&(n.inheritType=par...
method setLookAtProperties (line 3146) | setLookAtProperties(e,t){"LookAtProperty"in t&&Ut.get(e.ID).children.f...
method bindSkeleton (line 3146) | bindSkeleton(e,t,n){const i=this.parsePoseNodes();for(const s in e){co...
method parsePoseNodes (line 3146) | parsePoseNodes(){const e={};if("Pose"in lt.Objects){const t=lt.Objects...
method createAmbientLight (line 3146) | createAmbientLight(){if("GlobalSettings"in lt&&"AmbientColor"in lt.Glo...
class fM (line 3146) | class fM{parse(e){const t=new Map;if("Geometry"in lt.Objects){const n=lt...
method parse (line 3146) | parse(e){const t=new Map;if("Geometry"in lt.Objects){const n=lt.Object...
method parseGeometry (line 3146) | parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMe...
method parseMeshGeometry (line 3146) | parseMeshGeometry(e,t,n){const i=n.skeletons,s=[],r=e.parents.map(func...
method genGeometry (line 3146) | genGeometry(e,t,n,i){const s=new Xe;e.attrName&&(s.name=e.attrName);co...
method parseGeoNode (line 3146) | parseGeoNode(e,t){const n={};if(n.vertexPositions=e.Vertices!==void 0?...
method genBuffers (line 3146) | genBuffers(e){const t={vertex:[],normal:[],colors:[],uvs:[],materialIn...
method genFace (line 3146) | genFace(e,t,n,i,s,r,o,l,c,h){for(let u=2;u<h;u++)e.vertex.push(t.verte...
Copy disabled (too large)
Download .json
Condensed preview — 70 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,469K chars).
[
{
"path": ".dockerignore",
"chars": 314,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\n*.local\n"
},
{
"path": ".gitignore",
"chars": 328,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\n*.local\n"
},
{
"path": ".npmignore",
"chars": 209,
"preview": "# Ignore directories\n.idea\n.vscode\ndocs/\nexamples-demo/\npublic/\nnode_modules/\nscripts/\nsrc/\ndist/models\ndist/assets\n\n\n# "
},
{
"path": ".vscode/extensions.json",
"chars": 39,
"preview": "{\n \"recommendations\": [\"Vue.volar\"]\n}\n"
},
{
"path": "Dockerfile",
"chars": 492,
"preview": "FROM node:latest as builder\n# create work dir\nWORKDIR /\n# copy pakcage.json and pakcage-lock.json\nCOPY package*.json /\n#"
},
{
"path": "LICENSE",
"chars": 1065,
"preview": "MIT License\n\nCopyright (c) 2024 Tony Tao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\no"
},
{
"path": "dist/style.css",
"chars": 266,
"preview": ".viewer-container[data-v-e92274c2]{position:relative;width:100%;height:100%;margin:0;border:0;padding:0}.viewer-containe"
},
{
"path": "dist/types/3dLoader/vue3dLoader.vue.d.ts",
"chars": 15859,
"preview": "import { Object3D, Vector2, Scene, Raycaster, WebGLRenderer, PerspectiveCamera, AnimationMixer, Clock, Light, AxesHelper"
},
{
"path": "dist/types/index.d.ts",
"chars": 18506,
"preview": "import { App } from 'vue';\nimport * as Three from 'three';\nimport vue3dLoader from './3dLoader/vue3dLoader.vue';\nexport "
},
{
"path": "dist/vue-3d-loader.cjs.js",
"chars": 810686,
"preview": "\"use strict\";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:\"Module\"}});var Et=requi"
},
{
"path": "dist/vue-3d-loader.esm.js",
"chars": 1522994,
"preview": "import { defineComponent, ref, onMounted, onBeforeUnmount, watch, nextTick, openBlock, createElementBlock, createElement"
},
{
"path": "dist/vue-3d-loader.global.js",
"chars": 810606,
"preview": "var vue3dLoader=function(Qr,At){\"use strict\";/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Ide"
},
{
"path": "index.html",
"chars": 324,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"UTF-8\" />\n <link rel=\"icon\" href=\"/favicon.ico\" />\n <meta na"
},
{
"path": "package.json",
"chars": 1212,
"preview": "{\n \"name\": \"vue-3d-loader\",\n \"private\": false,\n \"version\": \"2.2.4\",\n \"main\": \"dist/vue-3d-loader.cjs.js\",\n \"module\""
},
{
"path": "public/assets/draco/gltf/draco_decoder.js",
"chars": 548080,
"preview": "\nvar DracoDecoderModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? d"
},
{
"path": "public/assets/draco/gltf/draco_encoder.js",
"chars": 954360,
"preview": "var DracoEncoderModule = function(DracoEncoderModule) {\n DracoEncoderModule = DracoEncoderModule || {};\n\nvar Module=typ"
},
{
"path": "public/assets/draco/gltf/draco_wasm_wrapper.js",
"chars": 53604,
"preview": "var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(f){var m=0;return function(){return m<f.leng"
},
{
"path": "public/models/collada/elf/elf.dae",
"chars": 1943123,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\r\n"
},
{
"path": "public/models/collada/pump/pump.dae",
"chars": 2596815,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\r\n"
},
{
"path": "public/models/collada/stormtrooper/stormtrooper.dae",
"chars": 2192040,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\r\n"
},
{
"path": "public/models/fbx/nurbs.fbx",
"chars": 4446,
"preview": "; FBX 7.2.0 project file\r\n; Copyright (C) 1997-2010 Autodesk Inc. and/or its licensors.\r\n; All rights reserved.\r\n; -----"
},
{
"path": "public/models/fbx/stanford-bunny.fbx",
"chars": 8071398,
"preview": "; FBX 7.5.0 project file\r\n; Copyright (C) 1997-2015 Autodesk Inc. and/or its licensors.\r\n; All rights reserved.\r\n; -----"
},
{
"path": "public/models/gltf/DamagedHelmet.gltf",
"chars": 4741,
"preview": "{\r\n \"accessors\" : [\r\n {\r\n \"bufferView\" : 0,\r\n \"componentType\" : 5123,\r\n \"coun"
},
{
"path": "public/models/json/lightmap.json",
"chars": 11060,
"preview": "{\"metadata\":{\"version\":4.5,\"type\":\"Object\",\"generator\":\"Object3D.toJSON\"},\"geometries\":[{\"uuid\":\"0E054665-995F-4348-950F"
},
{
"path": "public/models/json/readme.txt",
"chars": 81,
"preview": "Textures from:\n\nhttp://opengameart.org/node/7506\nhttp://opengameart.org/node/8038"
},
{
"path": "public/models/obj/male02.mtl",
"chars": 1114,
"preview": "# Material Count: 5\nnewmtl _01_-_Default1noCulli__01_-_Default1noCulli\nNs 30.0000\nKa 0.640000 0.640000 0.640000\nKd 0.640"
},
{
"path": "public/models/obj/male02.obj",
"chars": 464590,
"preview": "# Blender v2.54 (sub 0) OBJ File: ''\n# www.blender.org\nmtllib male02.mtl\no mesh1.002_mesh1-geometry\nv 4.649472 159.85496"
},
{
"path": "public/models/obj/readme.txt",
"chars": 126,
"preview": "Model by Reallusion iClone from Google 3d Warehouse:\n\nhttps://3dwarehouse.sketchup.com/user.html?id=01227258735522235942"
},
{
"path": "public/models/obj/tree.obj",
"chars": 125161,
"preview": "# This file uses centimeters as units for non-parametric coordinates.\n\nv 0.061043 0.025284 0.034490\nv 0.011829 0.022302 "
},
{
"path": "readme.md",
"chars": 18890,
"preview": "# vue-3d-loader\n\nvueJS + threeJS 3d viewer component. \n\nsupport .dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json models, and s"
},
{
"path": "readme_CN.md",
"chars": 16458,
"preview": "# vue-3d-loader\n\nvueJS + threeJS整合的一个3d展示组件。 \n\n支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一个场景导入多个不同3D模型,支持mtl材质以及"
},
{
"path": "scripts/build-types.js",
"chars": 2223,
"preview": "const path = require(\"path\");\nconst fs = require(\"fs\");\nconst glob = require(\"fast-glob\");\nconst { Project } = require(\""
},
{
"path": "src/3dLoader/loadModel.ts",
"chars": 4119,
"preview": "import { Box3, Vector3, Mesh, MeshPhongMaterial, MeshStandardMaterial,MeshBasicMaterial, Object3D, ObjectLoader } from \""
},
{
"path": "src/3dLoader/vue3dLoader.vue",
"chars": 29610,
"preview": "<template>\n <div ref=\"containerElement\" class=\"viewer-container\">\n <canvas ref=\"canvasElement\" class=\"viewer-canvas\""
},
{
"path": "src/App.vue",
"chars": 229,
"preview": "<template>\n <exampleIndex />\n</template>\n<script setup lang=\"ts\">\nimport exampleIndex from \"./examples/exampleIndex.vue"
},
{
"path": "src/env.d.ts",
"chars": 281,
"preview": "/// <reference types=\"vite/client\" />\n\ndeclare module '*.vue' {\n import type { DefineComponent } from 'vue'\n // eslint"
},
{
"path": "src/examples/add-label.vue",
"chars": 2054,
"preview": "<template>\n <vue3dLoader\n :filePath=\"filePath\"\n backgroundColor=\"#cccccc\"\n :position=\"[{ x: 0, y: 0, z: 0 }, {"
},
{
"path": "src/examples/background-color-and-alpha.vue",
"chars": 664,
"preview": "<template>\n <div class=\"content\">\n <div class=\"text\">This text is on the back of the model</div>\n <div class=\"mod"
},
{
"path": "src/examples/camera-position-and-rotate.vue",
"chars": 558,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/stl/colored.stl\"\n backgroundColor=\"#cccccc\"\n @load=\"onLoad\"\n :c"
},
{
"path": "src/examples/clone-same-obj.vue",
"chars": 1230,
"preview": "<template>\n <vue3dLoader \n :filePath=\"filePath\" \n backgroundColor=\"#cccccc\" \n :cameraPosition=\"p"
},
{
"path": "src/examples/disable-animations.vue",
"chars": 749,
"preview": "<template>\n <div class=\"check-box\">\n <input type=\"checkbox\" @change=\"change()\" checked />\n {{ autoPlay ? \"Play\" :"
},
{
"path": "src/examples/enable-axes-grid.vue",
"chars": 247,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/collada/stormtrooper/stormtrooper.dae\"\n outputEncoding=\"sRGB\"\n :en"
},
{
"path": "src/examples/enable-damping.vue",
"chars": 186,
"preview": "<template>\n <vue3dLoader\n :filePath=\"'/models/collada/elf/elf.dae'\"\n :cameraPosition=\"{ x: 0, y: -10, z: 13 }\"\n "
},
{
"path": "src/examples/event-model.vue",
"chars": 872,
"preview": "<template>\n <div class=\"tips\">\n Move your mouse over the model to change the model color\n </div>\n <vue3dLoader\n "
},
{
"path": "src/examples/exampleIndex.vue",
"chars": 5255,
"preview": "<template>\n <div class=\"example\">\n <div class=\"menu\">\n <ul>\n <li\n :class=\"currentMenuId === ite"
},
{
"path": "src/examples/height-and-width.vue",
"chars": 189,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/gltf/DamagedHelmet.gltf\"\n backgroundColor=\"rgb(216,217,219)\"\n :hei"
},
{
"path": "src/examples/interactive-controls.vue",
"chars": 1226,
"preview": "<template>\n <div class=\"controls\">\n <div class=\"buttons\">\n <!-- 禁止右键拖动 -->\n <button @click=\"enablePan = !e"
},
{
"path": "src/examples/light-model.vue",
"chars": 676,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/collada/elf/elf.dae\"\n :lights=\"lights\"\n :cameraPosition=\"{ x: 0, y"
},
{
"path": "src/examples/load-a-model.vue",
"chars": 400,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/collada/stormtrooper/stormtrooper.dae\"\n :cameraPosition=\"{ x: 10, y: "
},
{
"path": "src/examples/load-json-model.vue",
"chars": 84,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/json/lightmap.json\"\n />\n</template>"
},
{
"path": "src/examples/load-multiple-models.vue",
"chars": 1857,
"preview": "<template>\n <div class=\"check-box\">\n <input type=\"checkbox\" @change=\"change($event, 'position')\" checked /> Set\n "
},
{
"path": "src/examples/loader-draco-model.vue",
"chars": 1316,
"preview": "<template>\n <div class=\"draco-demo\" v-if=\"props.lang === 'zh'\">\n 使用此功能需要下载<a\n href=\"https://github.com/king2088"
},
{
"path": "src/examples/materials-and-textures.vue",
"chars": 1359,
"preview": "<template>\n <div>\n <div v-for=\"item in loaderList\" :key=\"item.title\">\n <h1>{{ item.title }}</h1>\n <vue3dLo"
},
{
"path": "src/examples/min-max-distance.vue",
"chars": 443,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/collada/stormtrooper/stormtrooper.dae\"\n :minDistance=\"min\"\n "
},
{
"path": "src/examples/parallel-load-models.vue",
"chars": 721,
"preview": "<template>\n <vue3dLoader\n :filePath=\"filePath\"\n :scale=\"scale\"\n :position=\"position\"\n :rotation=\"rotation\"\n"
},
{
"path": "src/examples/point-light-follow-camera.vue",
"chars": 396,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/collada/elf/elf.dae\"\n :lights=\"lights\"\n :cameraPosition=\"{ x: 0, y"
},
{
"path": "src/examples/progress-bar.vue",
"chars": 940,
"preview": "<template>\n <div class=\"content\">\n <vue3dLoader\n :filePath=\"filePath\"\n :scale=\"{ x: 0.4, y: 0.4, z: 0.4 }\""
},
{
"path": "src/examples/rotate-model.vue",
"chars": 391,
"preview": "<template>\n <vue3dLoader\n :rotation=\"rotation\"\n @load=\"onLoad()\"\n filePath=\"/models/collada/elf/elf.dae\"\n />\n"
},
{
"path": "src/examples/set-vertical-horizontal.vue",
"chars": 2081,
"preview": "<template>\n <div class=\"controls\">\n <div class=\"buttons\">\n <!-- 开启水平旋转 -->\n <button @click=\"setHorizontal("
},
{
"path": "src/examples/show-fps.vue",
"chars": 128,
"preview": "<template>\n <vue3dLoader\n filePath=\"/models/obj/tree.obj\"\n backgroundColor=\"#cccccc\"\n :showFps=\"true\"\n />\n</t"
},
{
"path": "src/index.ts",
"chars": 276,
"preview": "import { App } from 'vue';\nimport * as Three from 'three';\nimport vue3dLoader from './3dLoader/vue3dLoader.vue'\n\nexport "
},
{
"path": "src/main.ts",
"chars": 141,
"preview": "import { createApp } from 'vue'\nimport App from './App.vue'\nimport vue3dLoader from './index'\n\ncreateApp(App).use(vue3dL"
},
{
"path": "tsconfig.json",
"chars": 491,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"useDefineForClassFields\": true,\n \"module\": \"esnext\",\n \"modul"
},
{
"path": "tsconfig.node.json",
"chars": 142,
"preview": "{\n \"compilerOptions\": {\n \"composite\": true,\n \"module\": \"esnext\",\n \"moduleResolution\": \"node\"\n },\n \"include\":"
},
{
"path": "vite.config.ts",
"chars": 1448,
"preview": "import { defineConfig } from \"vite\";\nimport vue from \"@vitejs/plugin-vue\";\nimport path from \"path\";\nimport VueSetupExten"
}
]
// ... and 5 more files (download for full content)
About this extraction
This page contains the full source code of the king2088/vue-3d-loader GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 70 files (19.3 MB), approximately 5.1M tokens, and a symbol index with 7965 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.