diff --git a/build/trois.js b/build/trois.js index 292853a..382b8af 100644 --- a/build/trois.js +++ b/build/trois.js @@ -5,6 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var three = require('three'); var OrbitControls_js = require('three/examples/jsm/controls/OrbitControls.js'); +var RectAreaLightUniformsLib_js = require('three/examples/jsm/lights/RectAreaLightUniformsLib.js'); +var RectAreaLightHelper_js = require('three/examples/jsm/helpers/RectAreaLightHelper.js'); var EffectComposer_js = require('three/examples/jsm/postprocessing/EffectComposer.js'); var RenderPass_js = require('three/examples/jsm/postprocessing/RenderPass.js'); var BokehPass_js = require('three/examples/jsm/postprocessing/BokehPass.js'); @@ -354,6 +356,7 @@ function useThree() { } var Renderer = { + name: 'Renderer', props: { antialias: Boolean, alpha: Boolean, @@ -399,7 +402,8 @@ var Renderer = { }; if (this.three.init(params)) { - this.three.renderer.shadowMap.enabled = this.shadow; + this.renderer = this.three.renderer; + this.renderer.shadowMap.enabled = this.shadow; if (this.three.composer) { this.animateC(); } else { this.animate(); } } @@ -431,6 +435,7 @@ var Renderer = { render: function render() { return vue.h('canvas', {}, this.$slots.default()); }, + __hmrId: 'Renderer', }; function setFromProp(o, prop) { @@ -443,6 +448,17 @@ function setFromProp(o, prop) { }); } } +function bindProp(src, srcProp, dst, dstProp) { + if (!dstProp) { dstProp = srcProp; } + var ref = vue.toRef(src, srcProp); + if (ref.value instanceof Object) { + setFromProp(dst[dstProp], ref.value); + vue.watch(ref, function (value) { setFromProp(dst[dstProp], value); }, { deep: true }); + } else { + if (ref.value) { dst[dstProp] = src[srcProp]; } + vue.watch(ref, function (value) { dst[dstProp] = value; }); + } +} function propsValues(props, exclude) { var values = {}; Object.entries(props).forEach(function (ref) { @@ -496,17 +512,8 @@ function getMatcapFormatString(format) { } } -function useBindProp(comp, prop, object) { - if (comp[prop]) { - var ref = vue.toRef(comp, prop); - setFromProp(object, ref.value); - vue.watch(ref, function () { - setFromProp(object, ref.value); - }, { deep: true }); - } -} - var OrthographicCamera = { + name: 'OrthographicCamera', inject: ['three'], props: { left: { type: Number, default: -1 }, @@ -516,13 +523,13 @@ var OrthographicCamera = { near: { type: Number, default: 0.1 }, far: { type: Number, default: 2000 }, zoom: { type: Number, default: 1 }, - position: { type: [Object, three.Vector3], default: { x: 0, y: 0, z: 0 } }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, }, created: function created() { var this$1 = this; this.camera = new three.OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(function (p) { vue.watch(function () { return this$1[p]; }, function () { @@ -533,27 +540,26 @@ var OrthographicCamera = { this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'OrthographicCamera', }; var PerspectiveCamera = { + name: 'PerspectiveCamera', inject: ['three'], props: { aspect: { type: Number, default: 1 }, far: { type: Number, default: 2000 }, fov: { type: Number, default: 50 }, near: { type: Number, default: 0.1 }, - position: { type: [Object, three.Vector3], default: { x: 0, y: 0, z: 0 } }, - lookAt: { type: [Object, three.Vector3], default: null }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + lookAt: { type: Object, default: null }, }, created: function created() { var this$1 = this; this.camera = new three.PerspectiveCamera(this.fov, this.aspect, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); if (this.lookAt) { this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } vue.watch(function () { return this$1.lookAt; }, function (v) { this$1.camera.lookAt(v.x, v.y, v.z); }, { deep: true }); @@ -565,54 +571,63 @@ var PerspectiveCamera = { }); }); - // this.camera.updateProjectionMatrix(); this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'PerspectiveCamera', }; -var Group = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, +var Object3D = { + name: 'Object3D', + inject: ['three', 'scene', 'rendererComponent'], props: { - position: Object, - rotation: Object, - scale: Object, - }, - provide: function provide() { - return { - group: this.group, - }; - }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - - this.group = new three.Group(); - useBindProp(this, 'position', this.group.position); - useBindProp(this, 'rotation', this.group.rotation); - useBindProp(this, 'scale', this.group.scale); - - this.parent.add(this.group); + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + rotation: { type: Object, default: { x: 0, y: 0, z: 0 } }, + scale: { type: Object, default: { x: 1, y: 1, z: 1 } }, + lookAt: { type: Object, default: null }, }, + // can't use setup because it will not be used in sub components + // setup() {}, unmounted: function unmounted() { - this.parent.remove(this.group); + if (this.$parent.remove) { this.$parent.remove(this.o3d); } + }, + methods: { + initObject3D: function initObject3D(o3d) { + var this$1 = this; + + this.o3d = o3d; + + bindProp(this, 'position', this.o3d); + bindProp(this, 'rotation', this.o3d); + bindProp(this, 'scale', this.o3d); + + // fix lookat.x + if (this.lookAt) { this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } + vue.watch(function () { return this$1.lookAt; }, function (v) { this$1.o3d.lookAt(v.x, v.y, v.z); }, { deep: true }); + + if (this.$parent.add) { this.$parent.add(this.o3d); } + }, + add: function add(o) { this.o3d.add(o); }, + remove: function remove(o) { this.o3d.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; + }, + __hmrId: 'Object3D', +}; + +var Group = { + name: 'Group', + extends: Object3D, + created: function created() { + this.group = new three.Group(); + this.initObject3D(this.group); }, __hmrId: 'Group', }; var Scene = { + name: 'Scene', inject: ['three'], props: { id: String, @@ -635,23 +650,16 @@ var Scene = { } }, methods: { - // add(o) { - // this.scene.add(o); - // }, - // remove(o) { - // this.scene.remove(o); - // }, + add: function add(o) { this.scene.add(o); }, + remove: function remove(o) { this.scene.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, + __hmrId: 'Scene', }; var Geometry = { - emits: ['ready'], inject: ['mesh'], props: { rotateX: Number, @@ -664,26 +672,20 @@ var Geometry = { if (!this.mesh) { console.error('Missing parent Mesh'); } + this.watchProps = []; Object.entries(this.$props).forEach(function (e) { return this$1.watchProps.push(e[0]); }); - }, - beforeMount: function beforeMount() { + this.createGeometry(); this.rotateGeometry(); this.mesh.setGeometry(this.geometry); - }, - mounted: function mounted() { + this.addWatchers(); }, unmounted: function unmounted() { this.geometry.dispose(); }, methods: { - rotateGeometry: function rotateGeometry() { - if (this.rotateX) { this.geometry.rotateX(this.rotateX); } - if (this.rotateY) { this.geometry.rotateY(this.rotateY); } - if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } - }, addWatchers: function addWatchers() { var this$1 = this; @@ -693,6 +695,11 @@ var Geometry = { }); }); }, + rotateGeometry: function rotateGeometry() { + if (this.rotateX) { this.geometry.rotateX(this.rotateX); } + if (this.rotateY) { this.geometry.rotateY(this.rotateY); } + if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } + }, refreshGeometry: function refreshGeometry() { var oldGeo = this.geometry; this.createGeometry(); @@ -701,9 +708,7 @@ var Geometry = { oldGeo.dispose(); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var BoxGeometry = { @@ -723,7 +728,7 @@ var BoxGeometry = { if (this.size) { w = this.size; h = this.size; d = this.size; } - this.geometry = new three.BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); + this.geometry = new three.BoxGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); }, }, }; @@ -738,7 +743,7 @@ var CircleGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength); + this.geometry = new three.CircleGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength); }, }, }; @@ -756,7 +761,7 @@ var ConeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new three.ConeGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -775,7 +780,7 @@ var CylinderGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new three.CylinderGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -788,7 +793,7 @@ var DodecahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.DodecahedronBufferGeometry(this.radius, this.detail); + this.geometry = new three.DodecahedronGeometry(this.radius, this.detail); }, }, }; @@ -801,7 +806,7 @@ var IcosahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.IcosahedronBufferGeometry(this.radius, this.detail); + this.geometry = new three.IcosahedronGeometry(this.radius, this.detail); }, }, }; @@ -816,7 +821,7 @@ var LatheGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength); + this.geometry = new three.LatheGeometry(this.points, this.segments, this.phiStart, this.phiLength); }, }, }; @@ -829,7 +834,7 @@ var OctahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.OctahedronBufferGeometry(this.radius, this.detail); + this.geometry = new three.OctahedronGeometry(this.radius, this.detail); }, }, }; @@ -844,7 +849,7 @@ var PolyhedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail); + this.geometry = new three.PolyhedronGeometry(this.vertices, this.indices, this.radius, this.detail); }, }, }; @@ -861,7 +866,7 @@ var RingGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); + this.geometry = new three.RingGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); }, }, }; @@ -875,7 +880,7 @@ var SphereGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments); + this.geometry = new three.SphereGeometry(this.radius, this.widthSegments, this.heightSegments); }, }, }; @@ -888,7 +893,7 @@ var TetrahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.TetrahedronBufferGeometry(this.radius, this.detail); + this.geometry = new three.TetrahedronGeometry(this.radius, this.detail); }, }, }; @@ -904,7 +909,7 @@ var TorusGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); + this.geometry = new three.TorusGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); }, }, }; @@ -921,7 +926,7 @@ var TorusKnotGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); + this.geometry = new three.TorusKnotGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); }, }, }; @@ -937,70 +942,51 @@ var TubeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); + this.geometry = new three.TubeGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); }, }, }; var Light = { - inject: { - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + name: 'Light', props: { - color: { - type: String, - default: '#ffffff', - }, - intensity: { - type: Number, - default: 1, - }, - castShadow: { - type: Boolean, - default: false, - }, - shadowMapSize: Object, - position: Object, + color: { type: String, default: '#ffffff' }, + intensity: { type: Number, default: 1 }, + castShadow: { type: Boolean, default: false }, + shadowMapSize: { type: Object, default: { x: 512, y: 512 } }, }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { - var this$1 = this; - - useBindProp(this, 'position', this.light.position); - - if (this.light.target) { - useBindProp(this, 'target', this.light.target.position); - } - - if (this.light.shadow) { - this.light.castShadow = this.castShadow; - setFromProp(this.light.shadow.mapSize, this.shadowMapSize); - } - - ['color', 'intensity', 'castShadow'].forEach(function (p) { - vue.watch(function () { return this$1[p]; }, function () { - if (p === 'color') { - this$1.light.color = new three.Color(this$1.color); - } else { - this$1.light[p] = this$1[p]; - } - }); - }); - - this.parent.add(this.light); - if (this.light.target) { this.parent.add(this.light.target); } - }, unmounted: function unmounted() { - this.parent.remove(this.light); - if (this.light.target) { this.parent.remove(this.light.target); } + if (this.light.target) { this.$parent.remove(this.light.target); } }, - render: function render() { - return []; + methods: { + initLight: function initLight() { + var this$1 = this; + + if (this.light.target) { + bindProp(this, 'target', this.light.target, 'position'); + } + + if (this.light.shadow) { + this.light.castShadow = this.castShadow; + setFromProp(this.light.shadow.mapSize, this.shadowMapSize); + } + + ['color', 'intensity', 'castShadow'].forEach(function (p) { + vue.watch(function () { return this$1[p]; }, function () { + if (p === 'color') { + this$1.light.color = new three.Color(this$1.color); + } else { + this$1.light[p] = this$1[p]; + } + }); + }); + + this.initObject3D(this.light); + if (this.light.target) { this.$parent.add(this.light.target); } + }, }, __hmrId: 'Light', }; @@ -1009,6 +995,7 @@ var AmbientLight = { extends: Light, created: function created() { this.light = new three.AmbientLight(this.color, this.intensity); + this.initLight(); }, __hmrId: 'AmbientLight', }; @@ -1020,10 +1007,24 @@ var DirectionalLight = { }, created: function created() { this.light = new three.DirectionalLight(this.color, this.intensity); + this.initLight(); }, __hmrId: 'DirectionalLight', }; +var HemisphereLight = { + extends: Light, + props: { + groundColor: { type: String, default: '#ffffff' }, + }, + created: function created() { + this.light = new three.HemisphereLight(this.color, this.groundColor, this.intensity); + bindProp(this, 'groundColor', this.light); + this.initLight(); + }, + __hmrId: 'HemisphereLight', +}; + var PointLight = { extends: Light, props: { @@ -1038,29 +1039,50 @@ var PointLight = { }, created: function created() { this.light = new three.PointLight(this.color, this.intensity, this.distance, this.decay); + this.initLight(); }, __hmrId: 'PointLight', }; +var RectAreaLight = { + extends: Light, + props: { + width: { type: Number, default: 10 }, + height: { type: Number, default: 10 }, + helper: Boolean, + }, + created: function created() { + var this$1 = this; + + RectAreaLightUniformsLib_js.RectAreaLightUniformsLib.init(); + this.light = new three.RectAreaLight(this.color, this.intensity, this.width, this.height); + + ['width', 'height'].forEach(function (p) { + vue.watch(function () { return this$1[p]; }, function () { + this$1.light[p] = this$1[p]; + }); + }); + + if (this.helper) { + this.lightHelper = new RectAreaLightHelper_js.RectAreaLightHelper(this.light); + this.$parent.add(this.lightHelper); + } + + this.initLight(); + }, + unmounted: function unmounted() { + if (this.lightHelper) { this.$parent.remove(this.lightHelper); } + }, + __hmrId: 'RectAreaLight', +}; + var SpotLight = { extends: Light, props: { - angle: { - type: Number, - default: Math.PI / 3, - }, - decay: { - type: Number, - default: 1, - }, - distance: { - type: Number, - default: 0, - }, - penumbra: { - type: Number, - default: 0, - }, + angle: { type: Number, default: Math.PI / 3 }, + decay: { type: Number, default: 1 }, + distance: { type: Number, default: 0 }, + penumbra: { type: Number, default: 0 }, target: Object, }, created: function created() { @@ -1072,6 +1094,7 @@ var SpotLight = { this$1.light[p] = this$1[p]; }); }); + this.initLight(); }, __hmrId: 'SpotLight', }; @@ -1079,7 +1102,6 @@ var SpotLight = { var Material = { inject: ['three', 'mesh'], props: { - id: String, color: { type: [String, Number], default: '#ffffff' }, depthTest: { type: Boolean, default: true }, depthWrite: { type: Boolean, default: true }, @@ -1095,18 +1117,15 @@ var Material = { material: this, }; }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { + this._addWatchers(); if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, methods: { setProp: function setProp(key, value, needsUpdate) { @@ -1136,10 +1155,7 @@ var Material = { }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, __hmrId: 'Material', }; @@ -1148,7 +1164,7 @@ var BasicMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshBasicMaterial(propsValues(this.$props, ['id'])); + this.material = new three.MeshBasicMaterial(propsValues(this.$props)); }, }, __hmrId: 'BasicMaterial', @@ -1158,7 +1174,7 @@ var LambertMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshLambertMaterial(propsValues(this.$props, ['id'])); + this.material = new three.MeshLambertMaterial(propsValues(this.$props)); }, }, __hmrId: 'LambertMaterial', @@ -1173,7 +1189,7 @@ var MatcapMaterial = { methods: { createMaterial: function createMaterial() { var src = this.name ? getMatcapUrl(this.name) : this.src; - var opts = propsValues(this.$props, ['id', 'src', 'name']); + var opts = propsValues(this.$props, ['src', 'name']); opts.matcap = new three.TextureLoader().load(src); this.material = new three.MeshMatcapMaterial(opts); }, @@ -1192,7 +1208,7 @@ var PhongMaterial = { }, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshPhongMaterial(propsValues(this.$props, ['id'])); + this.material = new three.MeshPhongMaterial(propsValues(this.$props)); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1221,7 +1237,7 @@ var props = { envMapIntensity: { type: Number, default: 1 }, lightMapIntensity: { type: Number, default: 1 }, metalness: { type: Number, default: 0 }, - normalScale: { type: Object, default: function () { return new three.Vector2(1, 1); } }, + normalScale: { type: Object, default: { x: 1, y: 1 } }, roughness: { type: Number, default: 1 }, refractionRatio: { type: Number, default: 0.98 }, wireframe: Boolean, @@ -1232,7 +1248,7 @@ var StandardMaterial = { props: props, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale'])); + this.material = new three.MeshStandardMaterial(propsValues(this.$props, ['normalScale'])); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1248,7 +1264,7 @@ var StandardMaterial = { } }); }); - useBindProp(this, 'normalScale', this.material.normalScale); + bindProp(this, 'normalScale', this.material); }, }, __hmrId: 'StandardMaterial', @@ -1258,7 +1274,7 @@ var PhysicalMaterial = { extends: StandardMaterial, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshPhysicalMaterial(propsValues(this.$props, ['id'])); + this.material = new three.MeshPhysicalMaterial(propsValues(this.$props)); }, }, __hmrId: 'PhysicalMaterial', @@ -1308,22 +1324,17 @@ var SubsurfaceScatteringShader = { var ShaderMaterial = { inject: ['three', 'mesh'], props: { - id: String, uniforms: Object, vertexShader: String, fragmentShader: String, }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, render: function render() { return []; @@ -1359,7 +1370,7 @@ var SubSurfaceMaterial = { if (key === 'color') { _key = 'diffuse'; } _value = new three.Color(value); } - if (!['id', 'transparent', 'vertexColors'].includes(key)) { + if (!['transparent', 'vertexColors'].includes(key)) { uniforms[_key].value = _value; } }); @@ -1378,7 +1389,7 @@ var ToonMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new three.MeshToonMaterial(propsValues(this.$props, ['id'])); + this.material = new three.MeshToonMaterial(propsValues(this.$props)); }, }, __hmrId: 'ToonMaterial', @@ -1388,11 +1399,19 @@ var Texture = { inject: ['material'], emits: ['loaded'], props: { + id: { type: String, default: 'map' }, src: String, onLoad: Function, onProgress: Function, onError: Function, - id: { type: String, default: 'map' }, + mapping: { type: Number, default: three.UVMapping }, + wrapS: { type: Number, default: three.ClampToEdgeWrapping }, + wrapT: { type: Number, default: three.ClampToEdgeWrapping }, + magFilter: { type: Number, default: three.LinearFilter }, + minFilter: { type: Number, default: three.LinearMipmapLinearFilter }, + repeat: { type: Object, default: { x: 1, y: 1 } }, + rotation: { type: Number, default: 0 }, + center: { type: Object, default: { x: 0, y: 0 } }, }, created: function created() { var this$1 = this; @@ -1406,7 +1425,13 @@ var Texture = { }, methods: { createTexture: function createTexture() { + var this$1 = this; + this.texture = new three.TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError); + var wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center']; + wathProps.forEach(function (prop) { + bindProp(this$1, prop, this$1.texture); + }); }, refreshTexture: function refreshTexture() { this.createTexture(); @@ -1417,9 +1442,7 @@ var Texture = { this.$emit('loaded'); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var CubeTexture = { @@ -1475,18 +1498,9 @@ var CubeTexture = { }; var Mesh = { - inject: { - three: 'three', - scene: 'scene', - rendererComponent: 'rendererComponent', - group: { default: null }, - }, - emits: ['ready'], + extends: Object3D, + name: 'Mesh', props: { - materialId: String, - position: Object, - rotation: Object, - scale: Object, castShadow: Boolean, receiveShadow: Boolean, onHover: Function, @@ -1494,34 +1508,25 @@ var Mesh = { }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, provide: function provide() { return { mesh: this, }; }, mounted: function mounted() { - if (this.geometry && !this.mesh) { this.initMesh(); } - }, - unmounted: function unmounted() { - if (this.mesh) { - this.three.removeIntersectObject(this.mesh); - this.parent.remove(this.mesh); - } - if (this.geometry) { this.geometry.dispose(); } - if (this.material && !this.materialId) { this.material.dispose(); } + if (!this.mesh && !this.loading) { this.initMesh(); } }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } this.mesh = new three.Mesh(this.geometry, this.material); + ['castShadow', 'receiveShadow'].forEach(function (p) { + this$1.mesh[p] = this$1[p]; + vue.watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); + }); + if (this.onHover) { this.mesh.onHover = function (over) { this$1.onHover({ component: this$1, over: over }); }; this.three.addIntersectObject(this.mesh); @@ -1532,25 +1537,7 @@ var Mesh = { this.three.addIntersectObject(this.mesh); } - this.bindProps(); - this.parent.add(this.mesh); - this.$emit('ready'); - }, - bindProps: function bindProps() { - var this$1 = this; - - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - - ['castShadow', 'receiveShadow'].forEach(function (p) { - this$1.mesh[p] = this$1[p]; - vue.watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); - }); - - vue.watch(function () { return this$1.materialId; }, function () { - this$1.mesh.material = this$1.three.materials[this$1.materialId]; - }); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -1567,11 +1554,13 @@ var Mesh = { oldGeo.dispose(); }, }, - render: function render() { - if (this.$slots.default) { - return this.$slots.default(); + unmounted: function unmounted() { + if (this.mesh) { + this.three.removeIntersectObject(this.mesh); } - return []; + // for predefined mesh (geometry and material are not unmounted) + if (this.geometry) { this.geometry.dispose(); } + if (this.material) { this.material.dispose(); } }, __hmrId: 'Mesh', }; @@ -1960,6 +1949,11 @@ var TextProps = { var Text = { extends: Mesh, props: Object.assign({}, TextProps), + data: function data() { + return { + loading: true, + }; + }, created: function created() { var this$1 = this; @@ -1976,6 +1970,7 @@ var Text = { var loader = new three.FontLoader(); loader.load(this.fontSrc, function (font) { + this$1.loading = false; this$1.font = font; this$1.createGeometry(); this$1.initMesh(); @@ -2066,6 +2061,7 @@ var Tube = { extends: Mesh, props: { path: three.Curve, + points: Array, tubularSegments: { type: Number, default: 64 }, radius: { type: Number, default: 1 }, radialSegments: { type: Number, default: 8 }, @@ -2075,22 +2071,84 @@ var Tube = { var this$1 = this; this.createGeometry(); - - var watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed']; + var watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed']; watchProps.forEach(function (prop) { - vue.watch(function () { return this$1[prop]; }, function () { + vue.watch(function () { return this$1[prop]; }, function (v) { this$1.refreshGeometry(); }); }); + // watch(() => this.points, () => { + // this.updatePoints(); + // }); }, methods: { createGeometry: function createGeometry() { - this.geometry = new three.TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed); + var curve; + if (this.points) { + curve = new three.CatmullRomCurve3(this.points); + } else if (this.path) { + curve = this.path; + } else { + console.error('Missing path curve or points.'); + } + this.geometry = new three.TubeGeometry(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed); + }, + updateCurve: function updateCurve() { + updateTubeGeometryPoints(this.geometry, this.points); }, }, __hmrId: 'Tube', }; +function updateTubeGeometryPoints(tube, points) { + var curve = new three.CatmullRomCurve3(points); + var ref = tube.parameters; + var radialSegments = ref.radialSegments; + var radius = ref.radius; + var tubularSegments = ref.tubularSegments; + var closed = ref.closed; + var frames = curve.computeFrenetFrames(tubularSegments, closed); + tube.tangents = frames.tangents; + tube.normals = frames.normals; + tube.binormals = frames.binormals; + tube.parameters.path = curve; + + var pArray = tube.attributes.position.array; + var nArray = tube.attributes.normal.array; + var normal = new three.Vector3(); + var P; + + for (var i = 0; i < tubularSegments; i++) { + updateSegment(i); + } + updateSegment(tubularSegments); + + tube.attributes.position.needsUpdate = true; + tube.attributes.normal.needsUpdate = true; + + function updateSegment(i) { + P = curve.getPointAt(i / tubularSegments, P); + var N = frames.normals[i]; + var B = frames.binormals[i]; + for (var j = 0; j <= radialSegments; j++) { + var v = j / radialSegments * Math.PI * 2; + var sin = Math.sin(v); + var cos = -Math.cos(v); + normal.x = (cos * N.x + sin * B.x); + normal.y = (cos * N.y + sin * B.y); + normal.z = (cos * N.z + sin * B.z); + normal.normalize(); + var index = (i * (radialSegments + 1) + j) * 3; + nArray[index] = normal.x; + nArray[index + 1] = normal.y; + nArray[index + 2] = normal.z; + pArray[index] = P.x + radius * normal.x; + pArray[index + 1] = P.y + radius * normal.y; + pArray[index + 2] = P.z + radius * normal.z; + } + } +} + var Gem = { extends: Mesh, props: { @@ -2106,15 +2164,15 @@ var Gem = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.meshBack) { this.parent.remove(this.meshBack); } + if (this.meshBack) { this.$parent.remove(this.meshBack); } if (this.materialBack) { this.materialBack.dispose(); } }, methods: { initGem: function initGem() { var cubeRT = new three.WebGLCubeRenderTarget(this.cubeRTSize, { format: three.RGBFormat, generateMipmaps: true, minFilter: three.LinearMipmapLinearFilter }); this.cubeCamera = new three.CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.side = three.FrontSide; this.material.envMap = cubeRT.texture; @@ -2135,10 +2193,10 @@ var Gem = { this.meshBack = new three.Mesh(this.geometry, this.materialBack); - useBindProp(this, 'position', this.meshBack.position); - useBindProp(this, 'rotation', this.meshBack.rotation); - useBindProp(this, 'scale', this.meshBack.scale); - this.parent.add(this.meshBack); + bindProp(this, 'position', this.meshBack); + bindProp(this, 'rotation', this.meshBack); + bindProp(this, 'scale', this.meshBack); + this.$parent.add(this.meshBack); }, updateCubeRT: function updateCubeRT() { this.mesh.visible = false; @@ -2220,61 +2278,37 @@ var Image = { }; var InstancedMesh = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, props: { - materialId: String, - count: Number, - position: Object, castShadow: Boolean, receiveShadow: Boolean, + count: Number, }, provide: function provide() { return { mesh: this, }; }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, beforeMount: function beforeMount() { if (!this.$slots.default) { console.error('Missing Geometry'); } }, - mounted: function mounted() { + created: function created() { this.initMesh(); }, - unmounted: function unmounted() { - this.parent.remove(this.mesh); - }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } - this.mesh = new three.InstancedMesh(this.geometry, this.material, this.count); - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - ['castShadow', 'receiveShadow'].forEach(function (p) { this$1.mesh[p] = this$1[p]; vue.watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); }); - // watch(() => this.materialId, () => { - // this.mesh.material = this.three.materials[this.materialId]; - // }); - - this.parent.add(this.mesh); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -2285,9 +2319,6 @@ var InstancedMesh = { if (this.mesh) { this.mesh.material = material; } }, }, - render: function render() { - return this.$slots.default(); - }, __hmrId: 'InstancedMesh', }; @@ -2306,13 +2337,13 @@ var MirrorMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new three.WebGLCubeRenderTarget(this.cubeRTSize, { format: three.RGBFormat, generateMipmaps: true, minFilter: three.LinearMipmapLinearFilter }); this.cubeCamera = new three.CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - this.parent.add(this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.needsUpdate = true; @@ -2342,14 +2373,14 @@ var RefractionMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new three.WebGLCubeRenderTarget(this.cubeRTSize, { mapping: three.CubeRefractionMapping, format: three.RGBFormat, generateMipmaps: true, minFilter: three.LinearMipmapLinearFilter }); this.cubeCamera = new three.CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.refractionRatio = this.refractionRatio; @@ -2365,38 +2396,30 @@ var RefractionMesh = { }; var Sprite = { - emits: ['ready', 'loaded'], - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + emits: ['loaded'], props: { src: String, - position: Object, - scale: Object, + }, + data: function data() { + return { + loading: true, + }; }, created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { this.texture = new three.TextureLoader().load(this.src, this.onLoaded); this.material = new three.SpriteMaterial({ map: this.texture }); this.sprite = new three.Sprite(this.material); this.geometry = this.sprite.geometry; - useBindProp(this, 'position', this.sprite.position); - useBindProp(this, 'scale', this.sprite.scale); - - this.parent.add(this.sprite); - this.$emit('ready'); + this.initObject3D(this.sprite); }, unmounted: function unmounted() { this.texture.dispose(); this.material.dispose(); - this.parent.remove(this.sprite); }, methods: { onLoaded: function onLoaded() { + this.loading = false; this.updateUV(); this.$emit('loaded'); }, @@ -2420,9 +2443,6 @@ var Sprite = { this.geometry.attributes.position.needsUpdate = true; }, }, - render: function render() { - return []; - }, __hmrId: 'Sprite', }; @@ -2660,17 +2680,6 @@ var TiltShift = { fragmentShader: "\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n ", }; -function useBindPropValue(src, srcProp, dst, dstProp) { - if ( dstProp === void 0 ) dstProp = 'value'; - - if (src[srcProp]) { - dst[dstProp] = src[srcProp]; - vue.watch(function () { return src[srcProp]; }, function (value) { - dst[dstProp] = value; - }); - } -} - var TiltShiftPass = { extends: EffectPass, props: { @@ -2696,8 +2705,8 @@ var TiltShiftPass = { uniforms1.end = uniforms.end; uniforms1.texSize = uniforms.texSize; - useBindPropValue(this, 'blurRadius', uniforms.blurRadius); - useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius); + bindProp(this, 'blurRadius', uniforms.blurRadius, 'value'); + bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value'); this.updateFocusLine(); ['start', 'end'].forEach(function (p) { @@ -2764,8 +2773,8 @@ var ZoomBlurPass = { this.passes.push(this.pass); var uniforms = this.uniforms = this.pass.uniforms; - useBindProp(this, 'center', uniforms.center.value); - useBindPropValue(this, 'strength', uniforms.strength); + bindProp(this, 'center', uniforms.center, 'value'); + bindProp(this, 'strength', uniforms.strength, 'value'); }, __hmrId: 'ZoomBlurPass', }; @@ -2795,7 +2804,9 @@ var TROIS = /*#__PURE__*/Object.freeze({ TubeGeometry: TubeGeometry, AmbientLight: AmbientLight, DirectionalLight: DirectionalLight, + HemisphereLight: HemisphereLight, PointLight: PointLight, + RectAreaLight: RectAreaLight, SpotLight: SpotLight, BasicMaterial: BasicMaterial, LambertMaterial: LambertMaterial, @@ -2842,6 +2853,7 @@ var TROIS = /*#__PURE__*/Object.freeze({ UnrealBloomPass: UnrealBloomPass, ZoomBlurPass: ZoomBlurPass, setFromProp: setFromProp, + bindProp: bindProp, propsValues: propsValues, lerp: lerp, lerpv2: lerpv2, @@ -2878,7 +2890,9 @@ var TroisJSVuePlugin = { 'AmbientLight', 'DirectionalLight', + 'HemisphereLight', 'PointLight', + 'RectAreaLight', 'SpotLight', 'BasicMaterial', @@ -2940,6 +2954,10 @@ var TroisJSVuePlugin = { }, }; +function createApp(params) { + return vue.createApp(params).use(TroisJSVuePlugin); +} + exports.AmbientLight = AmbientLight; exports.BasicMaterial = BasicMaterial; exports.BokehPass = BokehPass; @@ -2962,6 +2980,7 @@ exports.FilmPass = FilmPass; exports.Gem = Gem; exports.Group = Group; exports.HalftonePass = HalftonePass; +exports.HemisphereLight = HemisphereLight; exports.Icosahedron = Icosahedron; exports.IcosahedronGeometry = IcosahedronGeometry; exports.Image = Image; @@ -2982,6 +3001,7 @@ exports.Plane = Plane; exports.PointLight = PointLight; exports.Polyhedron = Polyhedron; exports.PolyhedronGeometry = PolyhedronGeometry; +exports.RectAreaLight = RectAreaLight; exports.RefractionMesh = RefractionMesh; exports.RenderPass = RenderPass; exports.Renderer = Renderer; @@ -3010,6 +3030,8 @@ exports.Tube = Tube; exports.TubeGeometry = TubeGeometry; exports.UnrealBloomPass = UnrealBloomPass; exports.ZoomBlurPass = ZoomBlurPass; +exports.bindProp = bindProp; +exports.createApp = createApp; exports.getMatcapUrl = getMatcapUrl; exports.lerp = lerp; exports.lerpv2 = lerpv2; diff --git a/build/trois.module.cdn.js b/build/trois.module.cdn.js index c0714a3..71a18ae 100644 --- a/build/trois.module.cdn.js +++ b/build/trois.module.cdn.js @@ -1,6 +1,8 @@ -import { h, toRef, watch } from 'https://unpkg.com/vue@3.0.5/dist/vue.esm-browser.prod.js'; -import { Vector2, Vector3, Plane as Plane$1, Raycaster, WebGLRenderer, OrthographicCamera as OrthographicCamera$1, PerspectiveCamera as PerspectiveCamera$1, Group as Group$1, Scene as Scene$1, Color, BoxBufferGeometry, CircleBufferGeometry, ConeBufferGeometry, CylinderBufferGeometry, DodecahedronBufferGeometry, IcosahedronBufferGeometry, LatheBufferGeometry, OctahedronBufferGeometry, PolyhedronBufferGeometry, RingBufferGeometry, SphereBufferGeometry, TetrahedronBufferGeometry, TorusBufferGeometry, TorusKnotBufferGeometry, Curve, TubeBufferGeometry, AmbientLight as AmbientLight$1, DirectionalLight as DirectionalLight$1, PointLight as PointLight$1, SpotLight as SpotLight$1, FrontSide, MeshBasicMaterial, MeshLambertMaterial, TextureLoader, MeshMatcapMaterial, MeshPhongMaterial, MeshStandardMaterial, MeshPhysicalMaterial, ShaderChunk, UniformsUtils, ShaderLib, ShaderMaterial as ShaderMaterial$1, MeshToonMaterial, CubeTextureLoader, CubeRefractionMapping, Mesh as Mesh$1, PlaneBufferGeometry, FontLoader, TextBufferGeometry, WebGLCubeRenderTarget, RGBFormat, LinearMipmapLinearFilter, CubeCamera, BackSide, DoubleSide, InstancedMesh as InstancedMesh$1, SpriteMaterial, Sprite as Sprite$1 } from 'https://unpkg.com/three@0.125.2/build/three.module.js'; +import { h, toRef, watch, createApp as createApp$1 } from 'https://unpkg.com/vue@3.0.7/dist/vue.esm-browser.prod.js'; +import { Vector2, Vector3, Plane as Plane$1, Raycaster, WebGLRenderer, OrthographicCamera as OrthographicCamera$1, PerspectiveCamera as PerspectiveCamera$1, Group as Group$1, Scene as Scene$1, Color, BoxGeometry as BoxGeometry$1, CircleGeometry as CircleGeometry$1, ConeGeometry as ConeGeometry$1, CylinderGeometry as CylinderGeometry$1, DodecahedronGeometry as DodecahedronGeometry$1, IcosahedronGeometry as IcosahedronGeometry$1, LatheGeometry as LatheGeometry$1, OctahedronGeometry as OctahedronGeometry$1, PolyhedronGeometry as PolyhedronGeometry$1, RingGeometry as RingGeometry$1, SphereGeometry as SphereGeometry$1, TetrahedronGeometry as TetrahedronGeometry$1, TorusGeometry as TorusGeometry$1, TorusKnotGeometry as TorusKnotGeometry$1, Curve, TubeGeometry as TubeGeometry$1, AmbientLight as AmbientLight$1, DirectionalLight as DirectionalLight$1, HemisphereLight as HemisphereLight$1, PointLight as PointLight$1, RectAreaLight as RectAreaLight$1, SpotLight as SpotLight$1, FrontSide, MeshBasicMaterial, MeshLambertMaterial, TextureLoader, MeshMatcapMaterial, MeshPhongMaterial, MeshStandardMaterial, MeshPhysicalMaterial, ShaderChunk, UniformsUtils, ShaderLib, ShaderMaterial as ShaderMaterial$1, MeshToonMaterial, UVMapping, ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, CubeTextureLoader, CubeRefractionMapping, Mesh as Mesh$1, BoxBufferGeometry, CircleBufferGeometry, ConeBufferGeometry, CylinderBufferGeometry, DodecahedronBufferGeometry, IcosahedronBufferGeometry, LatheBufferGeometry, OctahedronBufferGeometry, PlaneBufferGeometry, PolyhedronBufferGeometry, RingBufferGeometry, SphereBufferGeometry, TetrahedronBufferGeometry, FontLoader, TextBufferGeometry, TorusBufferGeometry, TorusKnotBufferGeometry, CatmullRomCurve3, WebGLCubeRenderTarget, RGBFormat, CubeCamera, BackSide, DoubleSide, InstancedMesh as InstancedMesh$1, SpriteMaterial, Sprite as Sprite$1 } from 'https://unpkg.com/three@0.125.2/build/three.module.js'; import { OrbitControls } from 'https://unpkg.com/three@0.125.2/examples/jsm/controls/OrbitControls.js'; +import { RectAreaLightUniformsLib } from 'https://unpkg.com/three@0.125.2/examples/jsm/lights/RectAreaLightUniformsLib.js'; +import { RectAreaLightHelper } from 'https://unpkg.com/three@0.125.2/examples/jsm/helpers/RectAreaLightHelper.js'; import { EffectComposer as EffectComposer$1 } from 'https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/EffectComposer.js'; import { RenderPass as RenderPass$1 } from 'https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/RenderPass.js'; import { BokehPass as BokehPass$1 } from 'https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/BokehPass.js'; @@ -350,6 +352,7 @@ function useThree() { } var Renderer = { + name: 'Renderer', props: { antialias: Boolean, alpha: Boolean, @@ -395,7 +398,8 @@ var Renderer = { }; if (this.three.init(params)) { - this.three.renderer.shadowMap.enabled = this.shadow; + this.renderer = this.three.renderer; + this.renderer.shadowMap.enabled = this.shadow; if (this.three.composer) { this.animateC(); } else { this.animate(); } } @@ -427,6 +431,7 @@ var Renderer = { render: function render() { return h('canvas', {}, this.$slots.default()); }, + __hmrId: 'Renderer', }; function setFromProp(o, prop) { @@ -439,6 +444,17 @@ function setFromProp(o, prop) { }); } } +function bindProp(src, srcProp, dst, dstProp) { + if (!dstProp) { dstProp = srcProp; } + var ref = toRef(src, srcProp); + if (ref.value instanceof Object) { + setFromProp(dst[dstProp], ref.value); + watch(ref, function (value) { setFromProp(dst[dstProp], value); }, { deep: true }); + } else { + if (ref.value) { dst[dstProp] = src[srcProp]; } + watch(ref, function (value) { dst[dstProp] = value; }); + } +} function propsValues(props, exclude) { var values = {}; Object.entries(props).forEach(function (ref) { @@ -492,17 +508,8 @@ function getMatcapFormatString(format) { } } -function useBindProp(comp, prop, object) { - if (comp[prop]) { - var ref = toRef(comp, prop); - setFromProp(object, ref.value); - watch(ref, function () { - setFromProp(object, ref.value); - }, { deep: true }); - } -} - var OrthographicCamera = { + name: 'OrthographicCamera', inject: ['three'], props: { left: { type: Number, default: -1 }, @@ -512,13 +519,13 @@ var OrthographicCamera = { near: { type: Number, default: 0.1 }, far: { type: Number, default: 2000 }, zoom: { type: Number, default: 1 }, - position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, }, created: function created() { var this$1 = this; this.camera = new OrthographicCamera$1(this.left, this.right, this.top, this.bottom, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(function (p) { watch(function () { return this$1[p]; }, function () { @@ -529,27 +536,26 @@ var OrthographicCamera = { this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'OrthographicCamera', }; var PerspectiveCamera = { + name: 'PerspectiveCamera', inject: ['three'], props: { aspect: { type: Number, default: 1 }, far: { type: Number, default: 2000 }, fov: { type: Number, default: 50 }, near: { type: Number, default: 0.1 }, - position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } }, - lookAt: { type: [Object, Vector3], default: null }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + lookAt: { type: Object, default: null }, }, created: function created() { var this$1 = this; this.camera = new PerspectiveCamera$1(this.fov, this.aspect, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); if (this.lookAt) { this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } watch(function () { return this$1.lookAt; }, function (v) { this$1.camera.lookAt(v.x, v.y, v.z); }, { deep: true }); @@ -561,54 +567,63 @@ var PerspectiveCamera = { }); }); - // this.camera.updateProjectionMatrix(); this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'PerspectiveCamera', }; -var Group = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, +var Object3D = { + name: 'Object3D', + inject: ['three', 'scene', 'rendererComponent'], props: { - position: Object, - rotation: Object, - scale: Object, - }, - provide: function provide() { - return { - group: this.group, - }; - }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - - this.group = new Group$1(); - useBindProp(this, 'position', this.group.position); - useBindProp(this, 'rotation', this.group.rotation); - useBindProp(this, 'scale', this.group.scale); - - this.parent.add(this.group); + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + rotation: { type: Object, default: { x: 0, y: 0, z: 0 } }, + scale: { type: Object, default: { x: 1, y: 1, z: 1 } }, + lookAt: { type: Object, default: null }, }, + // can't use setup because it will not be used in sub components + // setup() {}, unmounted: function unmounted() { - this.parent.remove(this.group); + if (this.$parent.remove) { this.$parent.remove(this.o3d); } + }, + methods: { + initObject3D: function initObject3D(o3d) { + var this$1 = this; + + this.o3d = o3d; + + bindProp(this, 'position', this.o3d); + bindProp(this, 'rotation', this.o3d); + bindProp(this, 'scale', this.o3d); + + // fix lookat.x + if (this.lookAt) { this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } + watch(function () { return this$1.lookAt; }, function (v) { this$1.o3d.lookAt(v.x, v.y, v.z); }, { deep: true }); + + if (this.$parent.add) { this.$parent.add(this.o3d); } + }, + add: function add(o) { this.o3d.add(o); }, + remove: function remove(o) { this.o3d.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; + }, + __hmrId: 'Object3D', +}; + +var Group = { + name: 'Group', + extends: Object3D, + created: function created() { + this.group = new Group$1(); + this.initObject3D(this.group); }, __hmrId: 'Group', }; var Scene = { + name: 'Scene', inject: ['three'], props: { id: String, @@ -631,23 +646,16 @@ var Scene = { } }, methods: { - // add(o) { - // this.scene.add(o); - // }, - // remove(o) { - // this.scene.remove(o); - // }, + add: function add(o) { this.scene.add(o); }, + remove: function remove(o) { this.scene.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, + __hmrId: 'Scene', }; var Geometry = { - emits: ['ready'], inject: ['mesh'], props: { rotateX: Number, @@ -660,26 +668,20 @@ var Geometry = { if (!this.mesh) { console.error('Missing parent Mesh'); } + this.watchProps = []; Object.entries(this.$props).forEach(function (e) { return this$1.watchProps.push(e[0]); }); - }, - beforeMount: function beforeMount() { + this.createGeometry(); this.rotateGeometry(); this.mesh.setGeometry(this.geometry); - }, - mounted: function mounted() { + this.addWatchers(); }, unmounted: function unmounted() { this.geometry.dispose(); }, methods: { - rotateGeometry: function rotateGeometry() { - if (this.rotateX) { this.geometry.rotateX(this.rotateX); } - if (this.rotateY) { this.geometry.rotateY(this.rotateY); } - if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } - }, addWatchers: function addWatchers() { var this$1 = this; @@ -689,6 +691,11 @@ var Geometry = { }); }); }, + rotateGeometry: function rotateGeometry() { + if (this.rotateX) { this.geometry.rotateX(this.rotateX); } + if (this.rotateY) { this.geometry.rotateY(this.rotateY); } + if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } + }, refreshGeometry: function refreshGeometry() { var oldGeo = this.geometry; this.createGeometry(); @@ -697,9 +704,7 @@ var Geometry = { oldGeo.dispose(); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var BoxGeometry = { @@ -719,7 +724,7 @@ var BoxGeometry = { if (this.size) { w = this.size; h = this.size; d = this.size; } - this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); + this.geometry = new BoxGeometry$1(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); }, }, }; @@ -734,7 +739,7 @@ var CircleGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength); + this.geometry = new CircleGeometry$1(this.radius, this.segments, this.thetaStart, this.thetaLength); }, }, }; @@ -752,7 +757,7 @@ var ConeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new ConeGeometry$1(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -771,7 +776,7 @@ var CylinderGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new CylinderGeometry$1(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -784,7 +789,7 @@ var DodecahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail); + this.geometry = new DodecahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -797,7 +802,7 @@ var IcosahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail); + this.geometry = new IcosahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -812,7 +817,7 @@ var LatheGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength); + this.geometry = new LatheGeometry$1(this.points, this.segments, this.phiStart, this.phiLength); }, }, }; @@ -825,7 +830,7 @@ var OctahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new OctahedronBufferGeometry(this.radius, this.detail); + this.geometry = new OctahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -840,7 +845,7 @@ var PolyhedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail); + this.geometry = new PolyhedronGeometry$1(this.vertices, this.indices, this.radius, this.detail); }, }, }; @@ -857,7 +862,7 @@ var RingGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); + this.geometry = new RingGeometry$1(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); }, }, }; @@ -871,7 +876,7 @@ var SphereGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments); + this.geometry = new SphereGeometry$1(this.radius, this.widthSegments, this.heightSegments); }, }, }; @@ -884,7 +889,7 @@ var TetrahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail); + this.geometry = new TetrahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -900,7 +905,7 @@ var TorusGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); + this.geometry = new TorusGeometry$1(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); }, }, }; @@ -917,7 +922,7 @@ var TorusKnotGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); + this.geometry = new TorusKnotGeometry$1(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); }, }, }; @@ -933,70 +938,51 @@ var TubeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); + this.geometry = new TubeGeometry$1(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); }, }, }; var Light = { - inject: { - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + name: 'Light', props: { - color: { - type: String, - default: '#ffffff', - }, - intensity: { - type: Number, - default: 1, - }, - castShadow: { - type: Boolean, - default: false, - }, - shadowMapSize: Object, - position: Object, + color: { type: String, default: '#ffffff' }, + intensity: { type: Number, default: 1 }, + castShadow: { type: Boolean, default: false }, + shadowMapSize: { type: Object, default: { x: 512, y: 512 } }, }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { - var this$1 = this; - - useBindProp(this, 'position', this.light.position); - - if (this.light.target) { - useBindProp(this, 'target', this.light.target.position); - } - - if (this.light.shadow) { - this.light.castShadow = this.castShadow; - setFromProp(this.light.shadow.mapSize, this.shadowMapSize); - } - - ['color', 'intensity', 'castShadow'].forEach(function (p) { - watch(function () { return this$1[p]; }, function () { - if (p === 'color') { - this$1.light.color = new Color(this$1.color); - } else { - this$1.light[p] = this$1[p]; - } - }); - }); - - this.parent.add(this.light); - if (this.light.target) { this.parent.add(this.light.target); } - }, unmounted: function unmounted() { - this.parent.remove(this.light); - if (this.light.target) { this.parent.remove(this.light.target); } + if (this.light.target) { this.$parent.remove(this.light.target); } }, - render: function render() { - return []; + methods: { + initLight: function initLight() { + var this$1 = this; + + if (this.light.target) { + bindProp(this, 'target', this.light.target, 'position'); + } + + if (this.light.shadow) { + this.light.castShadow = this.castShadow; + setFromProp(this.light.shadow.mapSize, this.shadowMapSize); + } + + ['color', 'intensity', 'castShadow'].forEach(function (p) { + watch(function () { return this$1[p]; }, function () { + if (p === 'color') { + this$1.light.color = new Color(this$1.color); + } else { + this$1.light[p] = this$1[p]; + } + }); + }); + + this.initObject3D(this.light); + if (this.light.target) { this.$parent.add(this.light.target); } + }, }, __hmrId: 'Light', }; @@ -1005,6 +991,7 @@ var AmbientLight = { extends: Light, created: function created() { this.light = new AmbientLight$1(this.color, this.intensity); + this.initLight(); }, __hmrId: 'AmbientLight', }; @@ -1016,10 +1003,24 @@ var DirectionalLight = { }, created: function created() { this.light = new DirectionalLight$1(this.color, this.intensity); + this.initLight(); }, __hmrId: 'DirectionalLight', }; +var HemisphereLight = { + extends: Light, + props: { + groundColor: { type: String, default: '#ffffff' }, + }, + created: function created() { + this.light = new HemisphereLight$1(this.color, this.groundColor, this.intensity); + bindProp(this, 'groundColor', this.light); + this.initLight(); + }, + __hmrId: 'HemisphereLight', +}; + var PointLight = { extends: Light, props: { @@ -1034,29 +1035,50 @@ var PointLight = { }, created: function created() { this.light = new PointLight$1(this.color, this.intensity, this.distance, this.decay); + this.initLight(); }, __hmrId: 'PointLight', }; +var RectAreaLight = { + extends: Light, + props: { + width: { type: Number, default: 10 }, + height: { type: Number, default: 10 }, + helper: Boolean, + }, + created: function created() { + var this$1 = this; + + RectAreaLightUniformsLib.init(); + this.light = new RectAreaLight$1(this.color, this.intensity, this.width, this.height); + + ['width', 'height'].forEach(function (p) { + watch(function () { return this$1[p]; }, function () { + this$1.light[p] = this$1[p]; + }); + }); + + if (this.helper) { + this.lightHelper = new RectAreaLightHelper(this.light); + this.$parent.add(this.lightHelper); + } + + this.initLight(); + }, + unmounted: function unmounted() { + if (this.lightHelper) { this.$parent.remove(this.lightHelper); } + }, + __hmrId: 'RectAreaLight', +}; + var SpotLight = { extends: Light, props: { - angle: { - type: Number, - default: Math.PI / 3, - }, - decay: { - type: Number, - default: 1, - }, - distance: { - type: Number, - default: 0, - }, - penumbra: { - type: Number, - default: 0, - }, + angle: { type: Number, default: Math.PI / 3 }, + decay: { type: Number, default: 1 }, + distance: { type: Number, default: 0 }, + penumbra: { type: Number, default: 0 }, target: Object, }, created: function created() { @@ -1068,6 +1090,7 @@ var SpotLight = { this$1.light[p] = this$1[p]; }); }); + this.initLight(); }, __hmrId: 'SpotLight', }; @@ -1075,7 +1098,6 @@ var SpotLight = { var Material = { inject: ['three', 'mesh'], props: { - id: String, color: { type: [String, Number], default: '#ffffff' }, depthTest: { type: Boolean, default: true }, depthWrite: { type: Boolean, default: true }, @@ -1091,18 +1113,15 @@ var Material = { material: this, }; }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { + this._addWatchers(); if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, methods: { setProp: function setProp(key, value, needsUpdate) { @@ -1132,10 +1151,7 @@ var Material = { }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, __hmrId: 'Material', }; @@ -1144,7 +1160,7 @@ var BasicMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshBasicMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshBasicMaterial(propsValues(this.$props)); }, }, __hmrId: 'BasicMaterial', @@ -1154,7 +1170,7 @@ var LambertMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshLambertMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshLambertMaterial(propsValues(this.$props)); }, }, __hmrId: 'LambertMaterial', @@ -1169,7 +1185,7 @@ var MatcapMaterial = { methods: { createMaterial: function createMaterial() { var src = this.name ? getMatcapUrl(this.name) : this.src; - var opts = propsValues(this.$props, ['id', 'src', 'name']); + var opts = propsValues(this.$props, ['src', 'name']); opts.matcap = new TextureLoader().load(src); this.material = new MeshMatcapMaterial(opts); }, @@ -1188,7 +1204,7 @@ var PhongMaterial = { }, methods: { createMaterial: function createMaterial() { - this.material = new MeshPhongMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshPhongMaterial(propsValues(this.$props)); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1217,7 +1233,7 @@ var props = { envMapIntensity: { type: Number, default: 1 }, lightMapIntensity: { type: Number, default: 1 }, metalness: { type: Number, default: 0 }, - normalScale: { type: Object, default: function () { return new Vector2(1, 1); } }, + normalScale: { type: Object, default: { x: 1, y: 1 } }, roughness: { type: Number, default: 1 }, refractionRatio: { type: Number, default: 0.98 }, wireframe: Boolean, @@ -1228,7 +1244,7 @@ var StandardMaterial = { props: props, methods: { createMaterial: function createMaterial() { - this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale'])); + this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale'])); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1244,7 +1260,7 @@ var StandardMaterial = { } }); }); - useBindProp(this, 'normalScale', this.material.normalScale); + bindProp(this, 'normalScale', this.material); }, }, __hmrId: 'StandardMaterial', @@ -1254,7 +1270,7 @@ var PhysicalMaterial = { extends: StandardMaterial, methods: { createMaterial: function createMaterial() { - this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshPhysicalMaterial(propsValues(this.$props)); }, }, __hmrId: 'PhysicalMaterial', @@ -1304,22 +1320,17 @@ var SubsurfaceScatteringShader = { var ShaderMaterial = { inject: ['three', 'mesh'], props: { - id: String, uniforms: Object, vertexShader: String, fragmentShader: String, }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, render: function render() { return []; @@ -1355,7 +1366,7 @@ var SubSurfaceMaterial = { if (key === 'color') { _key = 'diffuse'; } _value = new Color(value); } - if (!['id', 'transparent', 'vertexColors'].includes(key)) { + if (!['transparent', 'vertexColors'].includes(key)) { uniforms[_key].value = _value; } }); @@ -1374,7 +1385,7 @@ var ToonMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshToonMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshToonMaterial(propsValues(this.$props)); }, }, __hmrId: 'ToonMaterial', @@ -1384,11 +1395,19 @@ var Texture = { inject: ['material'], emits: ['loaded'], props: { + id: { type: String, default: 'map' }, src: String, onLoad: Function, onProgress: Function, onError: Function, - id: { type: String, default: 'map' }, + mapping: { type: Number, default: UVMapping }, + wrapS: { type: Number, default: ClampToEdgeWrapping }, + wrapT: { type: Number, default: ClampToEdgeWrapping }, + magFilter: { type: Number, default: LinearFilter }, + minFilter: { type: Number, default: LinearMipmapLinearFilter }, + repeat: { type: Object, default: { x: 1, y: 1 } }, + rotation: { type: Number, default: 0 }, + center: { type: Object, default: { x: 0, y: 0 } }, }, created: function created() { var this$1 = this; @@ -1402,7 +1421,13 @@ var Texture = { }, methods: { createTexture: function createTexture() { + var this$1 = this; + this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError); + var wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center']; + wathProps.forEach(function (prop) { + bindProp(this$1, prop, this$1.texture); + }); }, refreshTexture: function refreshTexture() { this.createTexture(); @@ -1413,9 +1438,7 @@ var Texture = { this.$emit('loaded'); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var CubeTexture = { @@ -1471,18 +1494,9 @@ var CubeTexture = { }; var Mesh = { - inject: { - three: 'three', - scene: 'scene', - rendererComponent: 'rendererComponent', - group: { default: null }, - }, - emits: ['ready'], + extends: Object3D, + name: 'Mesh', props: { - materialId: String, - position: Object, - rotation: Object, - scale: Object, castShadow: Boolean, receiveShadow: Boolean, onHover: Function, @@ -1490,34 +1504,25 @@ var Mesh = { }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, provide: function provide() { return { mesh: this, }; }, mounted: function mounted() { - if (this.geometry && !this.mesh) { this.initMesh(); } - }, - unmounted: function unmounted() { - if (this.mesh) { - this.three.removeIntersectObject(this.mesh); - this.parent.remove(this.mesh); - } - if (this.geometry) { this.geometry.dispose(); } - if (this.material && !this.materialId) { this.material.dispose(); } + if (!this.mesh && !this.loading) { this.initMesh(); } }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } this.mesh = new Mesh$1(this.geometry, this.material); + ['castShadow', 'receiveShadow'].forEach(function (p) { + this$1.mesh[p] = this$1[p]; + watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); + }); + if (this.onHover) { this.mesh.onHover = function (over) { this$1.onHover({ component: this$1, over: over }); }; this.three.addIntersectObject(this.mesh); @@ -1528,25 +1533,7 @@ var Mesh = { this.three.addIntersectObject(this.mesh); } - this.bindProps(); - this.parent.add(this.mesh); - this.$emit('ready'); - }, - bindProps: function bindProps() { - var this$1 = this; - - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - - ['castShadow', 'receiveShadow'].forEach(function (p) { - this$1.mesh[p] = this$1[p]; - watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); - }); - - watch(function () { return this$1.materialId; }, function () { - this$1.mesh.material = this$1.three.materials[this$1.materialId]; - }); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -1563,11 +1550,13 @@ var Mesh = { oldGeo.dispose(); }, }, - render: function render() { - if (this.$slots.default) { - return this.$slots.default(); + unmounted: function unmounted() { + if (this.mesh) { + this.three.removeIntersectObject(this.mesh); } - return []; + // for predefined mesh (geometry and material are not unmounted) + if (this.geometry) { this.geometry.dispose(); } + if (this.material) { this.material.dispose(); } }, __hmrId: 'Mesh', }; @@ -1956,6 +1945,11 @@ var TextProps = { var Text = { extends: Mesh, props: Object.assign({}, TextProps), + data: function data() { + return { + loading: true, + }; + }, created: function created() { var this$1 = this; @@ -1972,6 +1966,7 @@ var Text = { var loader = new FontLoader(); loader.load(this.fontSrc, function (font) { + this$1.loading = false; this$1.font = font; this$1.createGeometry(); this$1.initMesh(); @@ -2062,6 +2057,7 @@ var Tube = { extends: Mesh, props: { path: Curve, + points: Array, tubularSegments: { type: Number, default: 64 }, radius: { type: Number, default: 1 }, radialSegments: { type: Number, default: 8 }, @@ -2071,22 +2067,84 @@ var Tube = { var this$1 = this; this.createGeometry(); - - var watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed']; + var watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed']; watchProps.forEach(function (prop) { - watch(function () { return this$1[prop]; }, function () { + watch(function () { return this$1[prop]; }, function (v) { this$1.refreshGeometry(); }); }); + // watch(() => this.points, () => { + // this.updatePoints(); + // }); }, methods: { createGeometry: function createGeometry() { - this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed); + var curve; + if (this.points) { + curve = new CatmullRomCurve3(this.points); + } else if (this.path) { + curve = this.path; + } else { + console.error('Missing path curve or points.'); + } + this.geometry = new TubeGeometry$1(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed); + }, + updateCurve: function updateCurve() { + updateTubeGeometryPoints(this.geometry, this.points); }, }, __hmrId: 'Tube', }; +function updateTubeGeometryPoints(tube, points) { + var curve = new CatmullRomCurve3(points); + var ref = tube.parameters; + var radialSegments = ref.radialSegments; + var radius = ref.radius; + var tubularSegments = ref.tubularSegments; + var closed = ref.closed; + var frames = curve.computeFrenetFrames(tubularSegments, closed); + tube.tangents = frames.tangents; + tube.normals = frames.normals; + tube.binormals = frames.binormals; + tube.parameters.path = curve; + + var pArray = tube.attributes.position.array; + var nArray = tube.attributes.normal.array; + var normal = new Vector3(); + var P; + + for (var i = 0; i < tubularSegments; i++) { + updateSegment(i); + } + updateSegment(tubularSegments); + + tube.attributes.position.needsUpdate = true; + tube.attributes.normal.needsUpdate = true; + + function updateSegment(i) { + P = curve.getPointAt(i / tubularSegments, P); + var N = frames.normals[i]; + var B = frames.binormals[i]; + for (var j = 0; j <= radialSegments; j++) { + var v = j / radialSegments * Math.PI * 2; + var sin = Math.sin(v); + var cos = -Math.cos(v); + normal.x = (cos * N.x + sin * B.x); + normal.y = (cos * N.y + sin * B.y); + normal.z = (cos * N.z + sin * B.z); + normal.normalize(); + var index = (i * (radialSegments + 1) + j) * 3; + nArray[index] = normal.x; + nArray[index + 1] = normal.y; + nArray[index + 2] = normal.z; + pArray[index] = P.x + radius * normal.x; + pArray[index + 1] = P.y + radius * normal.y; + pArray[index + 2] = P.z + radius * normal.z; + } + } +} + var Gem = { extends: Mesh, props: { @@ -2102,15 +2160,15 @@ var Gem = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.meshBack) { this.parent.remove(this.meshBack); } + if (this.meshBack) { this.$parent.remove(this.meshBack); } if (this.materialBack) { this.materialBack.dispose(); } }, methods: { initGem: function initGem() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.side = FrontSide; this.material.envMap = cubeRT.texture; @@ -2131,10 +2189,10 @@ var Gem = { this.meshBack = new Mesh$1(this.geometry, this.materialBack); - useBindProp(this, 'position', this.meshBack.position); - useBindProp(this, 'rotation', this.meshBack.rotation); - useBindProp(this, 'scale', this.meshBack.scale); - this.parent.add(this.meshBack); + bindProp(this, 'position', this.meshBack); + bindProp(this, 'rotation', this.meshBack); + bindProp(this, 'scale', this.meshBack); + this.$parent.add(this.meshBack); }, updateCubeRT: function updateCubeRT() { this.mesh.visible = false; @@ -2216,61 +2274,37 @@ var Image = { }; var InstancedMesh = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, props: { - materialId: String, - count: Number, - position: Object, castShadow: Boolean, receiveShadow: Boolean, + count: Number, }, provide: function provide() { return { mesh: this, }; }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, beforeMount: function beforeMount() { if (!this.$slots.default) { console.error('Missing Geometry'); } }, - mounted: function mounted() { + created: function created() { this.initMesh(); }, - unmounted: function unmounted() { - this.parent.remove(this.mesh); - }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } - this.mesh = new InstancedMesh$1(this.geometry, this.material, this.count); - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - ['castShadow', 'receiveShadow'].forEach(function (p) { this$1.mesh[p] = this$1[p]; watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); }); - // watch(() => this.materialId, () => { - // this.mesh.material = this.three.materials[this.materialId]; - // }); - - this.parent.add(this.mesh); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -2281,9 +2315,6 @@ var InstancedMesh = { if (this.mesh) { this.mesh.material = material; } }, }, - render: function render() { - return this.$slots.default(); - }, __hmrId: 'InstancedMesh', }; @@ -2302,13 +2333,13 @@ var MirrorMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - this.parent.add(this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.needsUpdate = true; @@ -2338,14 +2369,14 @@ var RefractionMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.refractionRatio = this.refractionRatio; @@ -2361,38 +2392,30 @@ var RefractionMesh = { }; var Sprite = { - emits: ['ready', 'loaded'], - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + emits: ['loaded'], props: { src: String, - position: Object, - scale: Object, + }, + data: function data() { + return { + loading: true, + }; }, created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { this.texture = new TextureLoader().load(this.src, this.onLoaded); this.material = new SpriteMaterial({ map: this.texture }); this.sprite = new Sprite$1(this.material); this.geometry = this.sprite.geometry; - useBindProp(this, 'position', this.sprite.position); - useBindProp(this, 'scale', this.sprite.scale); - - this.parent.add(this.sprite); - this.$emit('ready'); + this.initObject3D(this.sprite); }, unmounted: function unmounted() { this.texture.dispose(); this.material.dispose(); - this.parent.remove(this.sprite); }, methods: { onLoaded: function onLoaded() { + this.loading = false; this.updateUV(); this.$emit('loaded'); }, @@ -2416,9 +2439,6 @@ var Sprite = { this.geometry.attributes.position.needsUpdate = true; }, }, - render: function render() { - return []; - }, __hmrId: 'Sprite', }; @@ -2656,17 +2676,6 @@ var TiltShift = { fragmentShader: "\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n ", }; -function useBindPropValue(src, srcProp, dst, dstProp) { - if ( dstProp === void 0 ) dstProp = 'value'; - - if (src[srcProp]) { - dst[dstProp] = src[srcProp]; - watch(function () { return src[srcProp]; }, function (value) { - dst[dstProp] = value; - }); - } -} - var TiltShiftPass = { extends: EffectPass, props: { @@ -2692,8 +2701,8 @@ var TiltShiftPass = { uniforms1.end = uniforms.end; uniforms1.texSize = uniforms.texSize; - useBindPropValue(this, 'blurRadius', uniforms.blurRadius); - useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius); + bindProp(this, 'blurRadius', uniforms.blurRadius, 'value'); + bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value'); this.updateFocusLine(); ['start', 'end'].forEach(function (p) { @@ -2760,8 +2769,8 @@ var ZoomBlurPass = { this.passes.push(this.pass); var uniforms = this.uniforms = this.pass.uniforms; - useBindProp(this, 'center', uniforms.center.value); - useBindPropValue(this, 'strength', uniforms.strength); + bindProp(this, 'center', uniforms.center, 'value'); + bindProp(this, 'strength', uniforms.strength, 'value'); }, __hmrId: 'ZoomBlurPass', }; @@ -2791,7 +2800,9 @@ var TROIS = /*#__PURE__*/Object.freeze({ TubeGeometry: TubeGeometry, AmbientLight: AmbientLight, DirectionalLight: DirectionalLight, + HemisphereLight: HemisphereLight, PointLight: PointLight, + RectAreaLight: RectAreaLight, SpotLight: SpotLight, BasicMaterial: BasicMaterial, LambertMaterial: LambertMaterial, @@ -2838,6 +2849,7 @@ var TROIS = /*#__PURE__*/Object.freeze({ UnrealBloomPass: UnrealBloomPass, ZoomBlurPass: ZoomBlurPass, setFromProp: setFromProp, + bindProp: bindProp, propsValues: propsValues, lerp: lerp, lerpv2: lerpv2, @@ -2874,7 +2886,9 @@ var TroisJSVuePlugin = { 'AmbientLight', 'DirectionalLight', + 'HemisphereLight', 'PointLight', + 'RectAreaLight', 'SpotLight', 'BasicMaterial', @@ -2936,5 +2950,9 @@ var TroisJSVuePlugin = { }, }; -export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; +function createApp(params) { + return createApp$1(params).use(TroisJSVuePlugin); +} + +export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, Gem, Group, HalftonePass, HemisphereLight, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RectAreaLight, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, bindProp, createApp, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; //# sourceMappingURL=trois.module.cdn.js.map diff --git a/build/trois.module.cdn.js.map b/build/trois.module.cdn.js.map index 1ad70c9..60b4c77 100644 --- a/build/trois.module.cdn.js.map +++ b/build/trois.module.cdn.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.cdn.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: [Object, Vector3], default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n // this.camera.updateProjectionMatrix();\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: {\r\n three: 'three',\r\n scene: 'scene',\r\n group: { default: null },\r\n },\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent = this.group ? this.group : this.scene;\r\n\r\n this.group = new Group();\r\n useBindProp(this, 'position', this.group.position);\r\n useBindProp(this, 'rotation', this.group.rotation);\r\n useBindProp(this, 'scale', this.group.scale);\r\n\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n group: { default: null },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['id', 'transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n group: { default: null },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.cdn.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Object3D.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/HemisphereLight.js","../src/lights/PointLight.js","../src/lights/RectAreaLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n name: 'Renderer',\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.renderer = this.three.renderer;\n this.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n __hmrId: 'Renderer',\n};\n","import { toRef, watch } from 'vue';\n\nexport function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function bindProp(src, srcProp, dst, dstProp) {\n if (!dstProp) dstProp = srcProp;\n const ref = toRef(src, srcProp);\n if (ref.value instanceof Object) {\n setFromProp(dst[dstProp], ref.value);\n watch(ref, (value) => { setFromProp(dst[dstProp], value); }, { deep: true });\n } else {\n if (ref.value) dst[dstProp] = src[srcProp];\n watch(ref, (value) => { dst[dstProp] = value; });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { OrthographicCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'OrthographicCamera',\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'PerspectiveCamera',\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: Object, default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'PerspectiveCamera',\n};\n","import { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'Object3D',\n inject: ['three', 'scene', 'rendererComponent'],\n props: {\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n rotation: { type: Object, default: { x: 0, y: 0, z: 0 } },\n scale: { type: Object, default: { x: 1, y: 1, z: 1 } },\n lookAt: { type: Object, default: null },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.$parent.remove) this.$parent.remove(this.o3d);\n },\n methods: {\n initObject3D(o3d) {\n this.o3d = o3d;\n\n bindProp(this, 'position', this.o3d);\n bindProp(this, 'rotation', this.o3d);\n bindProp(this, 'scale', this.o3d);\n\n // fix lookat.x\n if (this.lookAt) this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.o3d.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n if (this.$parent.add) this.$parent.add(this.o3d);\n },\n add(o) { this.o3d.add(o); },\n remove(o) { this.o3d.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Object3D',\n};\n","import { Group } from 'three';\nimport Object3D from './Object3D.js';\n\nexport default {\n name: 'Group',\n extends: Object3D,\n created() {\n this.group = new Group();\n this.initObject3D(this.group);\n },\n __hmrId: 'Group',\n};\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n name: 'Scene',\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n add(o) { this.scene.add(o); },\n remove(o) { this.scene.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Scene',\n};\n","import { watch } from 'vue';\n\nexport default {\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() { return []; },\n};\n","import { BoxGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport Object3D from '../core/Object3D.js';\nimport { bindProp, setFromProp } from '../tools.js';\n\nexport default {\n extends: Object3D,\n name: 'Light',\n props: {\n color: { type: String, default: '#ffffff' },\n intensity: { type: Number, default: 1 },\n castShadow: { type: Boolean, default: false },\n shadowMapSize: { type: Object, default: { x: 512, y: 512 } },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.light.target) this.$parent.remove(this.light.target);\n },\n methods: {\n initLight() {\n if (this.light.target) {\n bindProp(this, 'target', this.light.target, 'position');\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.initObject3D(this.light);\n if (this.light.target) this.$parent.add(this.light.target);\n },\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'DirectionalLight',\n};\n","import { HemisphereLight } from 'three';\nimport Light from './Light.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Light,\n props: {\n groundColor: { type: String, default: '#ffffff' },\n },\n created() {\n this.light = new HemisphereLight(this.color, this.groundColor, this.intensity);\n bindProp(this, 'groundColor', this.light);\n this.initLight();\n },\n __hmrId: 'HemisphereLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n this.initLight();\n },\n __hmrId: 'PointLight',\n};\n","import { RectAreaLight } from 'three';\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';\nimport { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n width: { type: Number, default: 10 },\n height: { type: Number, default: 10 },\n helper: Boolean,\n },\n created() {\n RectAreaLightUniformsLib.init();\n this.light = new RectAreaLight(this.color, this.intensity, this.width, this.height);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n\n if (this.helper) {\n this.lightHelper = new RectAreaLightHelper(this.light);\n this.$parent.add(this.lightHelper);\n }\n\n this.initLight();\n },\n unmounted() {\n if (this.lightHelper) this.$parent.remove(this.lightHelper);\n },\n __hmrId: 'RectAreaLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: { type: Number, default: Math.PI / 3 },\n decay: { type: Number, default: 1 },\n distance: { type: Number, default: 0 },\n penumbra: { type: Number, default: 0 },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n this.initLight();\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial } from 'three';\nimport { watch } from 'vue';\nimport { bindProp, propsValues } from '../tools.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: { x: 1, y: 1 } },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n bindProp(this, 'normalScale', this.material);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, TextureLoader, UVMapping } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n id: { type: String, default: 'map' },\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n mapping: { type: Number, default: UVMapping },\n wrapS: { type: Number, default: ClampToEdgeWrapping },\n wrapT: { type: Number, default: ClampToEdgeWrapping },\n magFilter: { type: Number, default: LinearFilter },\n minFilter: { type: Number, default: LinearMipmapLinearFilter },\n repeat: { type: Object, default: { x: 1, y: 1 } },\n rotation: { type: Number, default: 0 },\n center: { type: Object, default: { x: 0, y: 0 } },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n const wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center'];\n wathProps.forEach(prop => {\n bindProp(this, prop, this.texture);\n });\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() { return []; },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { watch } from 'vue';\nimport { Mesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n name: 'Mesh',\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (!this.mesh && !this.loading) this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new Mesh(this.geometry, this.material);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n }\n // for predefined mesh (geometry and material are not unmounted)\n if (this.geometry) this.geometry.dispose();\n if (this.material) this.material.dispose();\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.loading = false;\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { CatmullRomCurve3, Curve, TubeGeometry, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n points: Array,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n const watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], (v) => {\n this.refreshGeometry();\n });\n });\n // watch(() => this.points, () => {\n // this.updatePoints();\n // });\n },\n methods: {\n createGeometry() {\n let curve;\n if (this.points) {\n curve = new CatmullRomCurve3(this.points);\n } else if (this.path) {\n curve = this.path;\n } else {\n console.error('Missing path curve or points.');\n }\n this.geometry = new TubeGeometry(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n updateCurve() {\n updateTubeGeometryPoints(this.geometry, this.points);\n },\n },\n __hmrId: 'Tube',\n};\n\nfunction updateTubeGeometryPoints(tube, points) {\n const curve = new CatmullRomCurve3(points);\n const { radialSegments, radius, tubularSegments, closed } = tube.parameters;\n const frames = curve.computeFrenetFrames(tubularSegments, closed);\n tube.tangents = frames.tangents;\n tube.normals = frames.normals;\n tube.binormals = frames.binormals;\n tube.parameters.path = curve;\n\n const pArray = tube.attributes.position.array;\n const nArray = tube.attributes.normal.array;\n const normal = new Vector3();\n let P;\n\n for (let i = 0; i < tubularSegments; i++) {\n updateSegment(i);\n }\n updateSegment(tubularSegments);\n\n tube.attributes.position.needsUpdate = true;\n tube.attributes.normal.needsUpdate = true;\n\n function updateSegment(i) {\n P = curve.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = (cos * N.x + sin * B.x);\n normal.y = (cos * N.y + sin * B.y);\n normal.z = (cos * N.z + sin * B.z);\n normal.normalize();\n const index = (i * (radialSegments + 1) + j) * 3;\n nArray[index] = normal.x;\n nArray[index + 1] = normal.y;\n nArray[index + 2] = normal.z;\n pArray[index] = P.x + radius * normal.x;\n pArray[index + 1] = P.y + radius * normal.y;\n pArray[index + 2] = P.z + radius * normal.z;\n }\n }\n}\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.$parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n bindProp(this, 'position', this.meshBack);\n bindProp(this, 'rotation', this.meshBack);\n bindProp(this, 'scale', this.meshBack);\n this.$parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { watch } from 'vue';\nimport { InstancedMesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n count: Number,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n created() {\n this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n emits: ['loaded'],\n props: {\n src: String,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n this.initObject3D(this.sprite);\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n },\n methods: {\n onLoaded() {\n this.loading = false;\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n bindProp(this, 'blurRadius', uniforms.blurRadius, 'value');\n bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value');\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n bindProp(this, 'center', uniforms.center, 'value');\n bindProp(this, 'strength', uniforms.strength, 'value');\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import { createApp as _createApp } from 'vue';\nimport * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'HemisphereLight',\n 'PointLight',\n 'RectAreaLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n\nexport function createApp(params) {\n return _createApp(params).use(TroisJSVuePlugin);\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","HemisphereLight","PointLight","RectAreaLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","_createApp"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.cdn.min.js b/build/trois.module.cdn.min.js index c5ca670..2d1c99a 100644 --- a/build/trois.module.cdn.min.js +++ b/build/trois.module.cdn.min.js @@ -1,2 +1,2 @@ -import{h as e,toRef as t,watch as i}from"https://unpkg.com/vue@3.0.5/dist/vue.esm-browser.prod.js";import{Vector2 as r,Vector3 as s,Plane as n,Raycaster as a,WebGLRenderer as o,OrthographicCamera as h,PerspectiveCamera as u,Group as d,Scene as m,Color as c,BoxBufferGeometry as l,CircleBufferGeometry as f,ConeBufferGeometry as p,CylinderBufferGeometry as g,DodecahedronBufferGeometry as y,IcosahedronBufferGeometry as b,LatheBufferGeometry as v,OctahedronBufferGeometry as S,PolyhedronBufferGeometry as N,RingBufferGeometry as w,SphereBufferGeometry as x,TetrahedronBufferGeometry as _,TorusBufferGeometry as C,TorusKnotBufferGeometry as M,Curve as G,TubeBufferGeometry as I,AmbientLight as k,DirectionalLight as z,PointLight as P,SpotLight as R,FrontSide as B,MeshBasicMaterial as j,MeshLambertMaterial as E,TextureLoader as L,MeshMatcapMaterial as T,MeshPhongMaterial as O,MeshStandardMaterial as A,MeshPhysicalMaterial as F,ShaderChunk as U,UniformsUtils as D,ShaderLib as $,ShaderMaterial as H,MeshToonMaterial as W,CubeTextureLoader as V,CubeRefractionMapping as X,Mesh as q,PlaneBufferGeometry as Z,FontLoader as K,TextBufferGeometry as Y,WebGLCubeRenderTarget as J,RGBFormat as Q,LinearMipmapLinearFilter as ee,CubeCamera as te,BackSide as ie,DoubleSide as re,InstancedMesh as se,SpriteMaterial as ne,Sprite as ae}from"https://unpkg.com/three@0.125.2/build/three.module.js";import{OrbitControls as oe}from"https://unpkg.com/three@0.125.2/examples/jsm/controls/OrbitControls.js";import{EffectComposer as he}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as ue}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as de}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as me}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as ce}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as le}from"https://unpkg.com/three@0.125.2/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as fe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as pe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as ge}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/UnrealBloomPass.js";function ye(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},i=[],h=[],u=[],d=new r,m=new s,c=new n(new s(0,0,1),0),l=new a,f=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:d,mouseV3:m,init:function(t){t&&Object.entries(t).forEach((function(t){var i=t[0],r=t[1];e[i]=r}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new o({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new oe(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],i=e[1];p.orbitCtrl[t]=i})));e.resize?(N(),window.addEventListener("resize",N)):w(300|e.width,150|e.height);e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",b),p.mouse_move_element.addEventListener("mouseleave",v));e.click&&p.renderer.domElement.addEventListener("click",y);return i.forEach((function(e){return e()})),!0},dispose:function(){u=[],window.removeEventListener("resize",N),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",b),p.mouse_move_element.removeEventListener("mouseleave",v));p.renderer.domElement.removeEventListener("click",y),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.composer.render()},setSize:w,onAfterInit:function(e){i.push(e)},onAfterResize:function(e){h.push(e)},offAfterResize:function(e){h=h.filter((function(t){return t!==e}))},onBeforeRender:function(e){u.push(e)},offBeforeRender:function(e){u=u.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===f.indexOf(e)&&f.push(e)},removeIntersectObject:function(e){var t=f.indexOf(e);-1!==t&&f.splice(t,1)}};function g(e){var i=e.target.getBoundingClientRect();d.x=(e.clientX-i.left)/t.width*2-1,d.y=-(e.clientY-i.top)/t.height*2+1}function y(e){g(e),l.setFromCamera(d,p.camera);for(var t=l.intersectObjects(f),i=0;i1?1:i)}function we(e,t,i){e.x=Ne(e.x,t.x,i),e.y=Ne(e.y,t.y,i)}function xe(e,t,i){e.x=Ne(e.x,t.x,i),e.y=Ne(e.y,t.y,i),e.z=Ne(e.z,t.z,i)}function _e(e,t,i){return ei?i:e}function Ce(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function Me(e,r,s){if(e[r]){var n=t(e,r);ve(s,n.value),i(n,(function(){ve(s,n.value)}),{deep:!0})}}var Ge={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new h(this.left,this.right,this.top,this.bottom,this.near,this.far),Me(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},Ie={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,s],default:{x:0,y:0,z:0}},lookAt:{type:[Object,s],default:null}},created:function(){var e=this;this.camera=new u(this.fov,this.aspect,this.near,this.far),Me(this,"position",this.camera.position),this.lookAt&&this.camera.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),i((function(){return e.lookAt}),(function(t){e.camera.lookAt(t.x,t.y,t.z)}),{deep:!0}),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},ke={inject:{three:"three",scene:"scene",group:{default:null}},props:{position:Object,rotation:Object,scale:Object},provide:function(){return{group:this.group}},created:function(){this.parent=this.group?this.group:this.scene,this.group=new d,Me(this,"position",this.group.position),Me(this,"rotation",this.group.rotation),Me(this,"scale",this.group.scale),this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},ze={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new m;return e.background&&(t.background=new c(e.background)),i((function(){return e.background}),(function(e){t.background=new c(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Pe={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Re={extends:Pe,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new l(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},Be={extends:Pe,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new f(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},je={extends:Pe,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Ee={extends:Pe,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Le={extends:Pe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}}},Te={extends:Pe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}}},Oe={extends:Pe,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new v(this.points,this.segments,this.phiStart,this.phiLength)}}},Ae={extends:Pe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}}},Fe={extends:Pe,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}}},Ue={extends:Pe,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},De={extends:Pe,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.widthSegments,this.heightSegments)}}},$e={extends:Pe,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.detail)}}},He={extends:Pe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},We={extends:Pe,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},Ve={extends:Pe,props:{path:G,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new I(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},Xe={inject:{scene:"scene",group:{default:null}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},created:function(){this.parent=this.group?this.group:this.scene},mounted:function(){var e=this;Me(this,"position",this.light.position),this.light.target&&Me(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,ve(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new c(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},qe={extends:Xe,created:function(){this.light=new k(this.color,this.intensity)},__hmrId:"AmbientLight"},Ze={extends:Xe,props:{target:Object},created:function(){this.light=new z(this.color,this.intensity)},__hmrId:"DirectionalLight"},Ke={extends:Xe,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new P(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},Ye={extends:Xe,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new R(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},Je={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:B},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},Qe={extends:Je,methods:{createMaterial:function(){this.material=new j(Se(this.$props,["id"]))}},__hmrId:"BasicMaterial"},et={extends:Je,methods:{createMaterial:function(){this.material=new E(Se(this.$props,["id"]))}},__hmrId:"LambertMaterial"},tt={extends:Je,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?Ce(this.name):this.src,t=Se(this.$props,["id","src","name"]);t.matcap=(new L).load(e),this.material=new T(t)}},__hmrId:"MatcapMaterial"},it={extends:Je,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new O(Se(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},rt={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new r(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},st={extends:Je,props:rt,methods:{createMaterial:function(){this.material=new A(Se(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(rt).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),Me(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},nt={extends:st,methods:{createMaterial:function(){this.material=new F(Se(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var at,ot,ht,ut=U.meshphong_frag.slice(0,U.meshphong_frag.indexOf("void main() {")),dt=U.meshphong_frag.slice(U.meshphong_frag.indexOf("void main() {")),mt={uniforms:D.merge([$.phong.uniforms,{thicknessColor:{value:new c(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+U.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+ut+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+dt.replace("#include ",(at=U.lights_fragment_begin,ot="RE_Direct( directLight, geometry, material, reflectedLight );",ht="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",at.split(ot).join(ht)))},ct={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{color:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=mt,t=D.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1],s=i,n=r;["color","thicknessColor"].includes(i)&&("color"===i&&(s="diffuse"),n=new c(r)),["id","transparent","vertexColors"].includes(i)||(t[s].value=n)})),this.material=new H(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},lt={extends:Je,methods:{createMaterial:function(){this.material=new W(Se(this.$props,["id"]))}},__hmrId:"ToonMaterial"},ft={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new L).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},pt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new V).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=X,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},gt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",group:{default:null}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},created:function(){this.parent=this.group?this.group:this.scene},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new q(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;Me(this,"position",this.mesh.position),Me(this,"rotation",this.mesh.rotation),Me(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},yt={extends:gt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new l(this.size,this.size,this.size):this.geometry=new l(this.width,this.height,this.depth)}},__hmrId:"Box"},bt={extends:gt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new f(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},vt={extends:gt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},St={extends:gt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Nt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}},__hmrId:"Dodecahedron"},wt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}},__hmrId:"Icosahedron"},xt={extends:gt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new v(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},_t={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}},__hmrId:"Octahedron"},Ct={extends:gt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new Z(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Mt={extends:gt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Gt={extends:gt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},It={extends:gt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},kt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.detail)}},__hmrId:"Tetrahedron"},zt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Pt={extends:gt,props:Object.assign({},zt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new K).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new Y(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Rt={extends:gt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},Bt={extends:gt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},tubularSegments:{type:Number,default:64},radialSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.tubularSegments,this.radialSegments,this.p,this.q)}},__hmrId:"TorusKnot"},jt={extends:gt,props:{path:G,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new I(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Et={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new J(this.cubeRTSize,{format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),Me(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=B,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=ie,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new q(this.geometry,this.materialBack),Me(this,"position",this.meshBack.position),Me(this,"rotation",this.meshBack.rotation),Me(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},Lt={emits:["loaded"],extends:gt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new Z(1,1,1,1)},createMaterial:function(){this.material=new j({side:re,map:this.loadTexture()})},loadTexture:function(){return(new L).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},Tt={inject:{three:"three",scene:"scene",group:{default:null}},props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},provide:function(){return{mesh:this}},created:function(){this.parent=this.group?this.group:this.scene},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new se(this.geometry,this.material,this.count),Me(this,"position",this.mesh.position),Me(this,"rotation",this.mesh.rotation),Me(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},Ot={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},At={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{mapping:X,format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),Me(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},Ft={emits:["ready","loaded"],inject:{three:"three",scene:"scene",group:{default:null}},props:{src:String,position:Object,scale:Object},created:function(){this.parent=this.group?this.group:this.scene},mounted:function(){this.texture=(new L).load(this.src,this.onLoaded),this.material=new ne({map:this.texture}),this.sprite=new ae(this.material),this.geometry=this.sprite.geometry,Me(this,"position",this.sprite.position),Me(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},Ut={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new he(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},Dt={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},$t={extends:Dt,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new ue(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},Ht={extends:Dt,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new de(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},Wt={extends:Dt,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new me(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},Vt={extends:Dt,mounted:function(){var e=new ce(le);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},Xt={extends:Dt,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new fe(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},qt={extends:Dt,mounted:function(){var e=new pe(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},Zt="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",Kt={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new r},end:{value:new r},delta:{value:new r},texSize:{value:new r}},vertexShader:Zt,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function Yt(e,t,r,s){void 0===s&&(s="value"),e[t]&&(r[s]=e[t],i((function(){return e[t]}),(function(e){r[s]=e})))}var Jt={extends:Dt,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new ce(Kt),this.passes.push(this.pass),this.pass1=new ce(Kt),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,Yt(this,"blurRadius",t.blurRadius),Yt(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine,{deep:!0})})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new r).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},Qt={extends:Dt,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new r(this.three.size.width,this.three.size.height),t=new ge(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},ei={uniforms:{tDiffuse:{value:null},center:{value:new r(.5,.5)},strength:{value:0}},vertexShader:Zt,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},ti={extends:Dt,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new ce(ei),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;Me(this,"center",e.center.value),Yt(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},ii=Object.freeze({__proto__:null,Renderer:be,OrthographicCamera:Ge,PerspectiveCamera:Ie,Camera:Ie,Group:ke,Scene:ze,BoxGeometry:Re,CircleGeometry:Be,ConeGeometry:je,CylinderGeometry:Ee,DodecahedronGeometry:Le,IcosahedronGeometry:Te,LatheGeometry:Oe,OctahedronGeometry:Ae,PolyhedronGeometry:Fe,RingGeometry:Ue,SphereGeometry:De,TetrahedronGeometry:$e,TorusGeometry:He,TorusKnotGeometry:We,TubeGeometry:Ve,AmbientLight:qe,DirectionalLight:Ze,PointLight:Ke,SpotLight:Ye,BasicMaterial:Qe,LambertMaterial:et,MatcapMaterial:tt,PhongMaterial:it,PhysicalMaterial:nt,StandardMaterial:st,SubSurfaceMaterial:ct,ToonMaterial:lt,Texture:ft,CubeTexture:pt,Mesh:gt,Box:yt,Circle:bt,Cone:vt,Cylinder:St,Dodecahedron:Nt,Icosahedron:wt,Lathe:xt,Octahedron:_t,Plane:Ct,Polyhedron:Mt,Ring:Gt,Sphere:It,Tetrahedron:kt,Text:Pt,Torus:Rt,TorusKnot:Bt,Tube:jt,Gem:Et,Image:Lt,InstancedMesh:Tt,MirrorMesh:Ot,RefractionMesh:At,Sprite:Ft,EffectComposer:Ut,RenderPass:$t,BokehPass:Ht,FilmPass:Wt,FXAAPass:Vt,HalftonePass:Xt,SMAAPass:qt,TiltShiftPass:Jt,UnrealBloomPass:Qt,ZoomBlurPass:ti,setFromProp:ve,propsValues:Se,lerp:Ne,lerpv2:we,lerpv3:xe,limit:_e,getMatcapUrl:Ce}),ri={install:function(e){["Camera","OrthographicCamera","PerspectiveCamera","Renderer","Scene","Group","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","PointLight","SpotLight","BasicMaterial","LambertMaterial","MatcapMaterial","PhongMaterial","PhysicalMaterial","ShaderMaterial","StandardMaterial","SubSurfaceMaterial","ToonMaterial","Texture","CubeTexture","Box","Circle","Cone","Cylinder","Dodecahedron","Icosahedron","Mesh","Lathe","Octahedron","Plane","Polyhedron","Ring","Sphere","Tetrahedron","Text","Torus","TorusKnot","Tube","Gem","Image","InstancedMesh","MirrorMesh","RefractionMesh","Sprite","BokehPass","EffectComposer","FilmPass","FXAAPass","HalftonePass","RenderPass","SAOPass","SMAAPass","TiltShiftPass","UnrealBloomPass","ZoomBlurPass","GLTFViewer"].forEach((function(t){e.component(t,ii[t])}))}};export{qe as AmbientLight,Qe as BasicMaterial,Ht as BokehPass,yt as Box,Re as BoxGeometry,Ie as Camera,bt as Circle,Be as CircleGeometry,vt as Cone,je as ConeGeometry,pt as CubeTexture,St as Cylinder,Ee as CylinderGeometry,Ze as DirectionalLight,Nt as Dodecahedron,Le as DodecahedronGeometry,Ut as EffectComposer,Vt as FXAAPass,Wt as FilmPass,Et as Gem,ke as Group,Xt as HalftonePass,wt as Icosahedron,Te as IcosahedronGeometry,Lt as Image,Tt as InstancedMesh,et as LambertMaterial,xt as Lathe,Oe as LatheGeometry,tt as MatcapMaterial,gt as Mesh,Ot as MirrorMesh,_t as Octahedron,Ae as OctahedronGeometry,Ge as OrthographicCamera,Ie as PerspectiveCamera,it as PhongMaterial,nt as PhysicalMaterial,Ct as Plane,Ke as PointLight,Mt as Polyhedron,Fe as PolyhedronGeometry,At as RefractionMesh,$t as RenderPass,be as Renderer,Gt as Ring,Ue as RingGeometry,qt as SMAAPass,ze as Scene,It as Sphere,De as SphereGeometry,Ye as SpotLight,Ft as Sprite,st as StandardMaterial,ct as SubSurfaceMaterial,kt as Tetrahedron,$e as TetrahedronGeometry,Pt as Text,ft as Texture,Jt as TiltShiftPass,lt as ToonMaterial,Rt as Torus,He as TorusGeometry,Bt as TorusKnot,We as TorusKnotGeometry,ri as TroisJSVuePlugin,jt as Tube,Ve as TubeGeometry,Qt as UnrealBloomPass,ti as ZoomBlurPass,Ce as getMatcapUrl,Ne as lerp,we as lerpv2,xe as lerpv3,_e as limit,Se as propsValues,ve as setFromProp}; +import{h as e,toRef as t,watch as r,createApp as i}from"https://unpkg.com/vue@3.0.7/dist/vue.esm-browser.prod.js";import{Vector2 as s,Vector3 as n,Plane as a,Raycaster as o,WebGLRenderer as h,OrthographicCamera as u,PerspectiveCamera as m,Group as d,Scene as c,Color as l,BoxGeometry as f,CircleGeometry as p,ConeGeometry as g,CylinderGeometry as y,DodecahedronGeometry as b,IcosahedronGeometry as v,LatheGeometry as S,OctahedronGeometry as x,PolyhedronGeometry as N,RingGeometry as w,SphereGeometry as _,TetrahedronGeometry as C,TorusGeometry as M,TorusKnotGeometry as G,Curve as z,TubeGeometry as k,AmbientLight as I,DirectionalLight as R,HemisphereLight as L,PointLight as P,RectAreaLight as B,SpotLight as j,FrontSide as E,MeshBasicMaterial as T,MeshLambertMaterial as A,TextureLoader as O,MeshMatcapMaterial as F,MeshPhongMaterial as U,MeshStandardMaterial as D,MeshPhysicalMaterial as $,ShaderChunk as H,UniformsUtils as W,ShaderLib as V,ShaderMaterial as X,MeshToonMaterial as q,UVMapping as Z,ClampToEdgeWrapping as K,LinearFilter as Y,LinearMipmapLinearFilter as J,CubeTextureLoader as Q,CubeRefractionMapping as ee,Mesh as te,BoxBufferGeometry as re,CircleBufferGeometry as ie,ConeBufferGeometry as se,CylinderBufferGeometry as ne,DodecahedronBufferGeometry as ae,IcosahedronBufferGeometry as oe,LatheBufferGeometry as he,OctahedronBufferGeometry as ue,PlaneBufferGeometry as me,PolyhedronBufferGeometry as de,RingBufferGeometry as ce,SphereBufferGeometry as le,TetrahedronBufferGeometry as fe,FontLoader as pe,TextBufferGeometry as ge,TorusBufferGeometry as ye,TorusKnotBufferGeometry as be,CatmullRomCurve3 as ve,WebGLCubeRenderTarget as Se,RGBFormat as xe,CubeCamera as Ne,BackSide as we,DoubleSide as _e,InstancedMesh as Ce,SpriteMaterial as Me,Sprite as Ge}from"https://unpkg.com/three@0.125.2/build/three.module.js";import{OrbitControls as ze}from"https://unpkg.com/three@0.125.2/examples/jsm/controls/OrbitControls.js";import{RectAreaLightUniformsLib as ke}from"https://unpkg.com/three@0.125.2/examples/jsm/lights/RectAreaLightUniformsLib.js";import{RectAreaLightHelper as Ie}from"https://unpkg.com/three@0.125.2/examples/jsm/helpers/RectAreaLightHelper.js";import{EffectComposer as Re}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as Le}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as Pe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as Be}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as je}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as Ee}from"https://unpkg.com/three@0.125.2/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as Te}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as Ae}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as Oe}from"https://unpkg.com/three@0.125.2/examples/jsm/postprocessing/UnrealBloomPass.js";function Fe(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},r=[],i=[],u=[],m=new s,d=new n,c=new a(new n(0,0,1),0),l=new o,f=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:m,mouseV3:d,init:function(t){t&&Object.entries(t).forEach((function(t){var r=t[0],i=t[1];e[r]=i}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new h({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new ze(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],r=e[1];p.orbitCtrl[t]=r})));e.resize?(x(),window.addEventListener("resize",x)):N(300|e.width,150|e.height);e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",b),p.mouse_move_element.addEventListener("mouseleave",v));e.click&&p.renderer.domElement.addEventListener("click",y);return r.forEach((function(e){return e()})),!0},dispose:function(){u=[],window.removeEventListener("resize",x),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",b),p.mouse_move_element.removeEventListener("mouseleave",v));p.renderer.domElement.removeEventListener("click",y),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.composer.render()},setSize:N,onAfterInit:function(e){r.push(e)},onAfterResize:function(e){i.push(e)},offAfterResize:function(e){i=i.filter((function(t){return t!==e}))},onBeforeRender:function(e){u.push(e)},offBeforeRender:function(e){u=u.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===f.indexOf(e)&&f.push(e)},removeIntersectObject:function(e){var t=f.indexOf(e);-1!==t&&f.splice(t,1)}};function g(e){var r=e.target.getBoundingClientRect();m.x=(e.clientX-r.left)/t.width*2-1,m.y=-(e.clientY-r.top)/t.height*2+1}function y(e){g(e),l.setFromCamera(m,p.camera);for(var t=l.intersectObjects(f),r=0;r1?1:r)}function Ve(e,t,r){e.x=We(e.x,t.x,r),e.y=We(e.y,t.y,r)}function Xe(e,t,r){e.x=We(e.x,t.x,r),e.y=We(e.y,t.y,r),e.z=We(e.z,t.z,r)}function qe(e,t,r){return er?r:e}function Ze(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}var Ke={name:"OrthographicCamera",inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:Object,default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new u(this.left,this.right,this.top,this.bottom,this.near,this.far),$e(this,"position",this.camera),["left","right","top","bottom","near","far","zoom"].forEach((function(t){r((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},Ye={name:"PerspectiveCamera",inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:Object,default:{x:0,y:0,z:0}},lookAt:{type:Object,default:null}},created:function(){var e=this;this.camera=new m(this.fov,this.aspect,this.near,this.far),$e(this,"position",this.camera),this.lookAt&&this.camera.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),r((function(){return e.lookAt}),(function(t){e.camera.lookAt(t.x,t.y,t.z)}),{deep:!0}),["aspect","far","fov","near"].forEach((function(t){r((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},Je={name:"Object3D",inject:["three","scene","rendererComponent"],props:{position:{type:Object,default:{x:0,y:0,z:0}},rotation:{type:Object,default:{x:0,y:0,z:0}},scale:{type:Object,default:{x:1,y:1,z:1}},lookAt:{type:Object,default:null}},unmounted:function(){this.$parent.remove&&this.$parent.remove(this.o3d)},methods:{initObject3D:function(e){var t=this;this.o3d=e,$e(this,"position",this.o3d),$e(this,"rotation",this.o3d),$e(this,"scale",this.o3d),this.lookAt&&this.o3d.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),r((function(){return t.lookAt}),(function(e){t.o3d.lookAt(e.x,e.y,e.z)}),{deep:!0}),this.$parent.add&&this.$parent.add(this.o3d)},add:function(e){this.o3d.add(e)},remove:function(e){this.o3d.remove(e)}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Object3D"},Qe={name:"Group",extends:Je,created:function(){this.group=new d,this.initObject3D(this.group)},__hmrId:"Group"},et={name:"Scene",inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new c;return e.background&&(t.background=new l(e.background)),r((function(){return e.background}),(function(e){t.background=new l(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{add:function(e){this.scene.add(e)},remove:function(e){this.scene.remove(e)}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Scene"},tt={inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])})),this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{addWatchers:function(){var e=this;this.watchProps.forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},rt={extends:tt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,r=this.depth;this.size&&(e=this.size,t=this.size,r=this.size),this.geometry=new f(e,t,r,this.widthSegments,this.heightSegments,this.depthSegments)}}},it={extends:tt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},st={extends:tt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new g(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},nt={extends:tt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new y(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},at={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}}},ot={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.detail)}}},ht={extends:tt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new S(this.points,this.segments,this.phiStart,this.phiLength)}}},ut={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}}},mt={extends:tt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}}},dt={extends:tt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},ct={extends:tt,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.widthSegments,this.heightSegments)}}},lt={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.detail)}}},ft={extends:tt,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},pt={extends:tt,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},gt={extends:tt,props:{path:z,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new k(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},yt={extends:Je,name:"Light",props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:{type:Object,default:{x:512,y:512}}},unmounted:function(){this.light.target&&this.$parent.remove(this.light.target)},methods:{initLight:function(){var e=this;this.light.target&&$e(this,"target",this.light.target,"position"),this.light.shadow&&(this.light.castShadow=this.castShadow,De(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){r((function(){return e[t]}),(function(){"color"===t?e.light.color=new l(e.color):e.light[t]=e[t]}))})),this.initObject3D(this.light),this.light.target&&this.$parent.add(this.light.target)}},__hmrId:"Light"},bt={extends:yt,created:function(){this.light=new I(this.color,this.intensity),this.initLight()},__hmrId:"AmbientLight"},vt={extends:yt,props:{target:Object},created:function(){this.light=new R(this.color,this.intensity),this.initLight()},__hmrId:"DirectionalLight"},St={extends:yt,props:{groundColor:{type:String,default:"#ffffff"}},created:function(){this.light=new L(this.color,this.groundColor,this.intensity),$e(this,"groundColor",this.light),this.initLight()},__hmrId:"HemisphereLight"},xt={extends:yt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new P(this.color,this.intensity,this.distance,this.decay),this.initLight()},__hmrId:"PointLight"},Nt={extends:yt,props:{width:{type:Number,default:10},height:{type:Number,default:10},helper:Boolean},created:function(){var e=this;ke.init(),this.light=new B(this.color,this.intensity,this.width,this.height),["width","height"].forEach((function(t){r((function(){return e[t]}),(function(){e.light[t]=e[t]}))})),this.helper&&(this.lightHelper=new Ie(this.light),this.$parent.add(this.lightHelper)),this.initLight()},unmounted:function(){this.lightHelper&&this.$parent.remove(this.lightHelper)},__hmrId:"RectAreaLight"},wt={extends:yt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new j(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){r((function(){return e[t]}),(function(){e.light[t]=e[t]}))})),this.initLight()},__hmrId:"SpotLight"},_t={inject:["three","mesh"],props:{color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:E},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},created:function(){this.createMaterial(),this.mesh.setMaterial(this.material),this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose()},methods:{setProp:function(e,t,r){void 0===r&&(r=!1),this.material[e]=t,this.material.needsUpdate=r},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){r((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},Ct={extends:_t,methods:{createMaterial:function(){this.material=new T(He(this.$props))}},__hmrId:"BasicMaterial"},Mt={extends:_t,methods:{createMaterial:function(){this.material=new A(He(this.$props))}},__hmrId:"LambertMaterial"},Gt={extends:_t,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?Ze(this.name):this.src,t=He(this.$props,["src","name"]);t.matcap=(new O).load(e),this.material=new F(t)}},__hmrId:"MatcapMaterial"},zt={extends:_t,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new U(He(this.$props))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){r((function(){return e[t]}),(function(r){"emissive"===t||"specular"===t?e.material[t].set(r):e.material[t]=r}))}))}},__hmrId:"PhongMaterial"},kt={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:{x:1,y:1}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},It={extends:_t,props:kt,methods:{createMaterial:function(){this.material=new D(He(this.$props,["normalScale"]))},addWatchers:function(){var e=this;Object.keys(kt).forEach((function(t){"normalScale"!==t&&r((function(){return e[t]}),(function(r){"emissive"===t?e.material[t].set(r):e.material[t]=r}))})),$e(this,"normalScale",this.material)}},__hmrId:"StandardMaterial"},Rt={extends:It,methods:{createMaterial:function(){this.material=new $(He(this.$props))}},__hmrId:"PhysicalMaterial"};var Lt,Pt,Bt,jt=H.meshphong_frag.slice(0,H.meshphong_frag.indexOf("void main() {")),Et=H.meshphong_frag.slice(H.meshphong_frag.indexOf("void main() {")),Tt={uniforms:W.merge([V.phong.uniforms,{thicknessColor:{value:new l(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+H.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+jt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Et.replace("#include ",(Lt=H.lights_fragment_begin,Pt="RE_Direct( directLight, geometry, material, reflectedLight );",Bt="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Lt.split(Pt).join(Bt)))},At={extends:{inject:["three","mesh"],props:{uniforms:Object,vertexShader:String,fragmentShader:String},created:function(){this.createMaterial(),this.mesh.setMaterial(this.material),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose()},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{color:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=W.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var r=e[0],i=e[1],s=r,n=i;["color","thicknessColor"].includes(r)&&("color"===r&&(s="diffuse"),n=new l(i)),["transparent","vertexColors"].includes(r)||(t[s].value=n)})),this.material=new X(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},Ot={extends:_t,methods:{createMaterial:function(){this.material=new q(He(this.$props))}},__hmrId:"ToonMaterial"},Ft={inject:["material"],emits:["loaded"],props:{id:{type:String,default:"map"},src:String,onLoad:Function,onProgress:Function,onError:Function,mapping:{type:Number,default:Z},wrapS:{type:Number,default:K},wrapT:{type:Number,default:K},magFilter:{type:Number,default:Y},minFilter:{type:Number,default:J},repeat:{type:Object,default:{x:1,y:1}},rotation:{type:Number,default:0},center:{type:Object,default:{x:0,y:0}}},created:function(){var e=this;this.refreshTexture(),r((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){var e=this;this.texture=(new O).load(this.src,this.onLoaded,this.onProgress,this.onError);["mapping","wrapS","wrapT","magFilter","minFilter","repeat","rotation","rotation","center"].forEach((function(t){$e(e,t,e.texture)}))},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Ut={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),r((function(){return e.path}),this.refreshTexture),r((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new Q).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=ee,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Dt={extends:Je,name:"Mesh",props:{castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.mesh||this.loading||this.initMesh()},methods:{initMesh:function(){var e=this;this.mesh=new te(this.geometry,this.material),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],r((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.initObject3D(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},unmounted:function(){this.mesh&&this.three.removeIntersectObject(this.mesh),this.geometry&&this.geometry.dispose(),this.material&&this.material.dispose()},__hmrId:"Mesh"},$t={extends:Dt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new re(this.size,this.size,this.size):this.geometry=new re(this.width,this.height,this.depth)}},__hmrId:"Box"},Ht={extends:Dt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ie(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},Wt={extends:Dt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new se(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},Vt={extends:Dt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ne(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Xt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ae(this.radius,this.detail)}},__hmrId:"Dodecahedron"},qt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new oe(this.radius,this.detail)}},__hmrId:"Icosahedron"},Zt={extends:Dt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new he(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Kt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ue(this.radius,this.detail)}},__hmrId:"Octahedron"},Yt={extends:Dt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new me(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Jt={extends:Dt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new de(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Qt={extends:Dt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ce(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},er={extends:Dt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new le(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},tr={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new fe(this.radius,this.detail)}},__hmrId:"Tetrahedron"},rr={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},ir={extends:Dt,props:Object.assign({},rr),data:function(){return{loading:!0}},created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){r((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new pe).load(this.fontSrc,(function(t){e.loading=!1,e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new ge(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},sr={extends:Dt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ye(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},nr={extends:Dt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},tubularSegments:{type:Number,default:64},radialSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new be(this.radius,this.tube,this.tubularSegments,this.radialSegments,this.p,this.q)}},__hmrId:"TorusKnot"},ar={extends:Dt,props:{path:z,points:Array,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["tubularSegments","radius","radialSegments","closed"].forEach((function(t){r((function(){return e[t]}),(function(t){e.refreshGeometry()}))}))},methods:{createGeometry:function(){var e;this.points?e=new ve(this.points):this.path?e=this.path:console.error("Missing path curve or points."),this.geometry=new k(e,this.tubularSegments,this.radius,this.radialSegments,this.closed)},updateCurve:function(){!function(e,t){var r=new ve(t),i=e.parameters,s=i.radialSegments,a=i.radius,o=i.tubularSegments,h=i.closed,u=r.computeFrenetFrames(o,h);e.tangents=u.tangents,e.normals=u.normals,e.binormals=u.binormals,e.parameters.path=r;for(var m,d=e.attributes.position.array,c=e.attributes.normal.array,l=new n,f=0;f1?t=.5/this.iRatio:e=.5/this.iRatio;var r=this.geometry.attributes.position.array;r[0]=-e,r[1]=-t,r[5]=e,r[6]=-t,r[10]=e,r[11]=t,r[15]=-e,r[16]=t,this.geometry.attributes.position.needsUpdate=!0}},__hmrId:"Sprite"},lr={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new Re(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},fr={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},pr={extends:fr,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new Le(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},gr={extends:fr,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new Pe(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},yr={extends:fr,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new Be(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},br={extends:fr,mounted:function(){var e=new je(Ee);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},vr={extends:fr,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Te(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(i){t.uniforms[i].value=e[i],r((function(){return e[i]}),(function(){t.uniforms[i].value=e[i]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},Sr={extends:fr,mounted:function(){var e=new Ae(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},xr="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",Nr={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new s},end:{value:new s},delta:{value:new s},texSize:{value:new s}},vertexShader:xr,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},wr={extends:fr,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new je(Nr),this.passes.push(this.pass),this.pass1=new je(Nr),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,i=this.uniforms1=this.pass1.uniforms;i.blurRadius=t.blurRadius,i.gradientRadius=t.gradientRadius,i.start=t.start,i.end=t.end,i.texSize=t.texSize,$e(this,"blurRadius",t.blurRadius,"value"),$e(this,"gradientRadius",t.gradientRadius,"value"),this.updateFocusLine(),["start","end"].forEach((function(t){r((function(){return e[t]}),e.updateFocusLine,{deep:!0})})),this.pass.setSize=function(e,r){t.texSize.value.set(e,r)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new s).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},_r={extends:fr,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new s(this.three.size.width,this.three.size.height),t=new Oe(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},Cr={uniforms:{tDiffuse:{value:null},center:{value:new s(.5,.5)},strength:{value:0}},vertexShader:xr,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},Mr={extends:fr,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new je(Cr),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;$e(this,"center",e.center,"value"),$e(this,"strength",e.strength,"value")},__hmrId:"ZoomBlurPass"},Gr=Object.freeze({__proto__:null,Renderer:Ue,OrthographicCamera:Ke,PerspectiveCamera:Ye,Camera:Ye,Group:Qe,Scene:et,BoxGeometry:rt,CircleGeometry:it,ConeGeometry:st,CylinderGeometry:nt,DodecahedronGeometry:at,IcosahedronGeometry:ot,LatheGeometry:ht,OctahedronGeometry:ut,PolyhedronGeometry:mt,RingGeometry:dt,SphereGeometry:ct,TetrahedronGeometry:lt,TorusGeometry:ft,TorusKnotGeometry:pt,TubeGeometry:gt,AmbientLight:bt,DirectionalLight:vt,HemisphereLight:St,PointLight:xt,RectAreaLight:Nt,SpotLight:wt,BasicMaterial:Ct,LambertMaterial:Mt,MatcapMaterial:Gt,PhongMaterial:zt,PhysicalMaterial:Rt,StandardMaterial:It,SubSurfaceMaterial:At,ToonMaterial:Ot,Texture:Ft,CubeTexture:Ut,Mesh:Dt,Box:$t,Circle:Ht,Cone:Wt,Cylinder:Vt,Dodecahedron:Xt,Icosahedron:qt,Lathe:Zt,Octahedron:Kt,Plane:Yt,Polyhedron:Jt,Ring:Qt,Sphere:er,Tetrahedron:tr,Text:ir,Torus:sr,TorusKnot:nr,Tube:ar,Gem:or,Image:hr,InstancedMesh:ur,MirrorMesh:mr,RefractionMesh:dr,Sprite:cr,EffectComposer:lr,RenderPass:pr,BokehPass:gr,FilmPass:yr,FXAAPass:br,HalftonePass:vr,SMAAPass:Sr,TiltShiftPass:wr,UnrealBloomPass:_r,ZoomBlurPass:Mr,setFromProp:De,bindProp:$e,propsValues:He,lerp:We,lerpv2:Ve,lerpv3:Xe,limit:qe,getMatcapUrl:Ze}),zr={install:function(e){["Camera","OrthographicCamera","PerspectiveCamera","Renderer","Scene","Group","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","HemisphereLight","PointLight","RectAreaLight","SpotLight","BasicMaterial","LambertMaterial","MatcapMaterial","PhongMaterial","PhysicalMaterial","ShaderMaterial","StandardMaterial","SubSurfaceMaterial","ToonMaterial","Texture","CubeTexture","Box","Circle","Cone","Cylinder","Dodecahedron","Icosahedron","Mesh","Lathe","Octahedron","Plane","Polyhedron","Ring","Sphere","Tetrahedron","Text","Torus","TorusKnot","Tube","Gem","Image","InstancedMesh","MirrorMesh","RefractionMesh","Sprite","BokehPass","EffectComposer","FilmPass","FXAAPass","HalftonePass","RenderPass","SAOPass","SMAAPass","TiltShiftPass","UnrealBloomPass","ZoomBlurPass","GLTFViewer"].forEach((function(t){e.component(t,Gr[t])}))}};function kr(e){return i(e).use(zr)}export{bt as AmbientLight,Ct as BasicMaterial,gr as BokehPass,$t as Box,rt as BoxGeometry,Ye as Camera,Ht as Circle,it as CircleGeometry,Wt as Cone,st as ConeGeometry,Ut as CubeTexture,Vt as Cylinder,nt as CylinderGeometry,vt as DirectionalLight,Xt as Dodecahedron,at as DodecahedronGeometry,lr as EffectComposer,br as FXAAPass,yr as FilmPass,or as Gem,Qe as Group,vr as HalftonePass,St as HemisphereLight,qt as Icosahedron,ot as IcosahedronGeometry,hr as Image,ur as InstancedMesh,Mt as LambertMaterial,Zt as Lathe,ht as LatheGeometry,Gt as MatcapMaterial,Dt as Mesh,mr as MirrorMesh,Kt as Octahedron,ut as OctahedronGeometry,Ke as OrthographicCamera,Ye as PerspectiveCamera,zt as PhongMaterial,Rt as PhysicalMaterial,Yt as Plane,xt as PointLight,Jt as Polyhedron,mt as PolyhedronGeometry,Nt as RectAreaLight,dr as RefractionMesh,pr as RenderPass,Ue as Renderer,Qt as Ring,dt as RingGeometry,Sr as SMAAPass,et as Scene,er as Sphere,ct as SphereGeometry,wt as SpotLight,cr as Sprite,It as StandardMaterial,At as SubSurfaceMaterial,tr as Tetrahedron,lt as TetrahedronGeometry,ir as Text,Ft as Texture,wr as TiltShiftPass,Ot as ToonMaterial,sr as Torus,ft as TorusGeometry,nr as TorusKnot,pt as TorusKnotGeometry,zr as TroisJSVuePlugin,ar as Tube,gt as TubeGeometry,_r as UnrealBloomPass,Mr as ZoomBlurPass,$e as bindProp,kr as createApp,Ze as getMatcapUrl,We as lerp,Ve as lerpv2,Xe as lerpv3,qe as limit,He as propsValues,De as setFromProp}; //# sourceMappingURL=trois.module.cdn.min.js.map diff --git a/build/trois.module.cdn.min.js.map b/build/trois.module.cdn.min.js.map index 364d430..fbd0d11 100644 --- a/build/trois.module.cdn.min.js.map +++ b/build/trois.module.cdn.min.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.cdn.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: [Object, Vector3], default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n // this.camera.updateProjectionMatrix();\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: {\r\n three: 'three',\r\n scene: 'scene',\r\n group: { default: null },\r\n },\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent = this.group ? this.group : this.scene;\r\n\r\n this.group = new Group();\r\n useBindProp(this, 'position', this.group.position);\r\n useBindProp(this, 'rotation', this.group.rotation);\r\n useBindProp(this, 'scale', this.group.scale);\r\n\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n group: { default: null },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['id', 'transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n group: { default: null },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","onResize","window","addEventListener","setSize","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","lookAt","PerspectiveCamera","v","group","rotation","scale","parent","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","color","intensity","castShadow","shadowMapSize","light","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","clone","_key","_value","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.cdn.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Object3D.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/HemisphereLight.js","../src/lights/PointLight.js","../src/lights/RectAreaLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n name: 'Renderer',\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.renderer = this.three.renderer;\n this.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n __hmrId: 'Renderer',\n};\n","import { toRef, watch } from 'vue';\n\nexport function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function bindProp(src, srcProp, dst, dstProp) {\n if (!dstProp) dstProp = srcProp;\n const ref = toRef(src, srcProp);\n if (ref.value instanceof Object) {\n setFromProp(dst[dstProp], ref.value);\n watch(ref, (value) => { setFromProp(dst[dstProp], value); }, { deep: true });\n } else {\n if (ref.value) dst[dstProp] = src[srcProp];\n watch(ref, (value) => { dst[dstProp] = value; });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { OrthographicCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'OrthographicCamera',\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'PerspectiveCamera',\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: Object, default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'PerspectiveCamera',\n};\n","import { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'Object3D',\n inject: ['three', 'scene', 'rendererComponent'],\n props: {\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n rotation: { type: Object, default: { x: 0, y: 0, z: 0 } },\n scale: { type: Object, default: { x: 1, y: 1, z: 1 } },\n lookAt: { type: Object, default: null },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.$parent.remove) this.$parent.remove(this.o3d);\n },\n methods: {\n initObject3D(o3d) {\n this.o3d = o3d;\n\n bindProp(this, 'position', this.o3d);\n bindProp(this, 'rotation', this.o3d);\n bindProp(this, 'scale', this.o3d);\n\n // fix lookat.x\n if (this.lookAt) this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.o3d.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n if (this.$parent.add) this.$parent.add(this.o3d);\n },\n add(o) { this.o3d.add(o); },\n remove(o) { this.o3d.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Object3D',\n};\n","import { Group } from 'three';\nimport Object3D from './Object3D.js';\n\nexport default {\n name: 'Group',\n extends: Object3D,\n created() {\n this.group = new Group();\n this.initObject3D(this.group);\n },\n __hmrId: 'Group',\n};\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n name: 'Scene',\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n add(o) { this.scene.add(o); },\n remove(o) { this.scene.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Scene',\n};\n","import { watch } from 'vue';\n\nexport default {\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() { return []; },\n};\n","import { BoxGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport Object3D from '../core/Object3D.js';\nimport { bindProp, setFromProp } from '../tools.js';\n\nexport default {\n extends: Object3D,\n name: 'Light',\n props: {\n color: { type: String, default: '#ffffff' },\n intensity: { type: Number, default: 1 },\n castShadow: { type: Boolean, default: false },\n shadowMapSize: { type: Object, default: { x: 512, y: 512 } },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.light.target) this.$parent.remove(this.light.target);\n },\n methods: {\n initLight() {\n if (this.light.target) {\n bindProp(this, 'target', this.light.target, 'position');\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.initObject3D(this.light);\n if (this.light.target) this.$parent.add(this.light.target);\n },\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'DirectionalLight',\n};\n","import { HemisphereLight } from 'three';\nimport Light from './Light.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Light,\n props: {\n groundColor: { type: String, default: '#ffffff' },\n },\n created() {\n this.light = new HemisphereLight(this.color, this.groundColor, this.intensity);\n bindProp(this, 'groundColor', this.light);\n this.initLight();\n },\n __hmrId: 'HemisphereLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n this.initLight();\n },\n __hmrId: 'PointLight',\n};\n","import { RectAreaLight } from 'three';\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';\nimport { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n width: { type: Number, default: 10 },\n height: { type: Number, default: 10 },\n helper: Boolean,\n },\n created() {\n RectAreaLightUniformsLib.init();\n this.light = new RectAreaLight(this.color, this.intensity, this.width, this.height);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n\n if (this.helper) {\n this.lightHelper = new RectAreaLightHelper(this.light);\n this.$parent.add(this.lightHelper);\n }\n\n this.initLight();\n },\n unmounted() {\n if (this.lightHelper) this.$parent.remove(this.lightHelper);\n },\n __hmrId: 'RectAreaLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: { type: Number, default: Math.PI / 3 },\n decay: { type: Number, default: 1 },\n distance: { type: Number, default: 0 },\n penumbra: { type: Number, default: 0 },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n this.initLight();\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial } from 'three';\nimport { watch } from 'vue';\nimport { bindProp, propsValues } from '../tools.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: { x: 1, y: 1 } },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n bindProp(this, 'normalScale', this.material);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, TextureLoader, UVMapping } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n id: { type: String, default: 'map' },\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n mapping: { type: Number, default: UVMapping },\n wrapS: { type: Number, default: ClampToEdgeWrapping },\n wrapT: { type: Number, default: ClampToEdgeWrapping },\n magFilter: { type: Number, default: LinearFilter },\n minFilter: { type: Number, default: LinearMipmapLinearFilter },\n repeat: { type: Object, default: { x: 1, y: 1 } },\n rotation: { type: Number, default: 0 },\n center: { type: Object, default: { x: 0, y: 0 } },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n const wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center'];\n wathProps.forEach(prop => {\n bindProp(this, prop, this.texture);\n });\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() { return []; },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { watch } from 'vue';\nimport { Mesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n name: 'Mesh',\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (!this.mesh && !this.loading) this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new Mesh(this.geometry, this.material);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n }\n // for predefined mesh (geometry and material are not unmounted)\n if (this.geometry) this.geometry.dispose();\n if (this.material) this.material.dispose();\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.loading = false;\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { CatmullRomCurve3, Curve, TubeGeometry, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n points: Array,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n const watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], (v) => {\n this.refreshGeometry();\n });\n });\n // watch(() => this.points, () => {\n // this.updatePoints();\n // });\n },\n methods: {\n createGeometry() {\n let curve;\n if (this.points) {\n curve = new CatmullRomCurve3(this.points);\n } else if (this.path) {\n curve = this.path;\n } else {\n console.error('Missing path curve or points.');\n }\n this.geometry = new TubeGeometry(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n updateCurve() {\n updateTubeGeometryPoints(this.geometry, this.points);\n },\n },\n __hmrId: 'Tube',\n};\n\nfunction updateTubeGeometryPoints(tube, points) {\n const curve = new CatmullRomCurve3(points);\n const { radialSegments, radius, tubularSegments, closed } = tube.parameters;\n const frames = curve.computeFrenetFrames(tubularSegments, closed);\n tube.tangents = frames.tangents;\n tube.normals = frames.normals;\n tube.binormals = frames.binormals;\n tube.parameters.path = curve;\n\n const pArray = tube.attributes.position.array;\n const nArray = tube.attributes.normal.array;\n const normal = new Vector3();\n let P;\n\n for (let i = 0; i < tubularSegments; i++) {\n updateSegment(i);\n }\n updateSegment(tubularSegments);\n\n tube.attributes.position.needsUpdate = true;\n tube.attributes.normal.needsUpdate = true;\n\n function updateSegment(i) {\n P = curve.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = (cos * N.x + sin * B.x);\n normal.y = (cos * N.y + sin * B.y);\n normal.z = (cos * N.z + sin * B.z);\n normal.normalize();\n const index = (i * (radialSegments + 1) + j) * 3;\n nArray[index] = normal.x;\n nArray[index + 1] = normal.y;\n nArray[index + 2] = normal.z;\n pArray[index] = P.x + radius * normal.x;\n pArray[index + 1] = P.y + radius * normal.y;\n pArray[index + 2] = P.z + radius * normal.z;\n }\n }\n}\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.$parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n bindProp(this, 'position', this.meshBack);\n bindProp(this, 'rotation', this.meshBack);\n bindProp(this, 'scale', this.meshBack);\n this.$parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { watch } from 'vue';\nimport { InstancedMesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n count: Number,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n created() {\n this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n emits: ['loaded'],\n props: {\n src: String,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n this.initObject3D(this.sprite);\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n },\n methods: {\n onLoaded() {\n this.loading = false;\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n bindProp(this, 'blurRadius', uniforms.blurRadius, 'value');\n bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value');\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n bindProp(this, 'center', uniforms.center, 'value');\n bindProp(this, 'strength', uniforms.strength, 'value');\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import { createApp as _createApp } from 'vue';\nimport * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'HemisphereLight',\n 'PointLight',\n 'RectAreaLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n\nexport function createApp(params) {\n return _createApp(params).use(TroisJSVuePlugin);\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","onResize","window","addEventListener","setSize","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","name","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","__hmrId","setFromProp","prop","bindProp","src","srcProp","dst","dstProp","ref","toRef","watch","deep","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","inject","Number","near","far","zoom","created","OrthographicCamera","p","lookAt","PerspectiveCamera","v","rotation","scale","unmounted","$parent","remove","o3d","initObject3D","add","extends","Object3D","group","Group","id","background","Scene","Color","rotateX","rotateY","rotateZ","mesh","watchProps","$props","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxGeometry","radius","segments","thetaStart","thetaLength","CircleGeometry","radialSegments","openEnded","ConeGeometry","radiusTop","radiusBottom","CylinderGeometry","detail","DodecahedronGeometry","IcosahedronGeometry","points","Array","phiStart","phiLength","LatheGeometry","OctahedronGeometry","vertices","indices","PolyhedronGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingGeometry","SphereGeometry","TetrahedronGeometry","tube","tubularSegments","arc","TorusGeometry","q","TorusKnotGeometry","path","Curve","radiusSegments","closed","TubeGeometry","color","intensity","castShadow","shadowMapSize","light","initLight","mapSize","Light","AmbientLight","DirectionalLight","groundColor","HemisphereLight","distance","decay","PointLight","helper","RectAreaLightUniformsLib","RectAreaLight","lightHelper","RectAreaLightHelper","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","clone","_key","_value","TShaderMaterial","lights","MeshToonMaterial","emits","onLoad","Function","onProgress","onError","mapping","UVMapping","wrapS","ClampToEdgeWrapping","wrapT","magFilter","LinearFilter","minFilter","LinearMipmapLinearFilter","repeat","center","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","CubeRefractionMapping","receiveShadow","loading","initMesh","Mesh","over","component","addIntersectObject","event","removeIntersectObject","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","data","font","FontLoader","TextBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","curve","CatmullRomCurve3","updateCurve","parameters","frames","computeFrenetFrames","tangents","normals","binormals","P","pArray","attributes","array","nArray","updateSegment","getPointAt","N","B","j","sin","cos","index","updateTubeGeometryPoints","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","beforeMount","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","TroisJSVuePlugin","install","app","comp","TROIS","createApp","_createApp","use"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.js b/build/trois.module.js index 65ed25f..5a05f9d 100644 --- a/build/trois.module.js +++ b/build/trois.module.js @@ -1,6 +1,8 @@ -import { h, toRef, watch } from 'vue'; -import { Vector2, Vector3, Plane as Plane$1, Raycaster, WebGLRenderer, OrthographicCamera as OrthographicCamera$1, PerspectiveCamera as PerspectiveCamera$1, Group as Group$1, Scene as Scene$1, Color, BoxBufferGeometry, CircleBufferGeometry, ConeBufferGeometry, CylinderBufferGeometry, DodecahedronBufferGeometry, IcosahedronBufferGeometry, LatheBufferGeometry, OctahedronBufferGeometry, PolyhedronBufferGeometry, RingBufferGeometry, SphereBufferGeometry, TetrahedronBufferGeometry, TorusBufferGeometry, TorusKnotBufferGeometry, Curve, TubeBufferGeometry, AmbientLight as AmbientLight$1, DirectionalLight as DirectionalLight$1, PointLight as PointLight$1, SpotLight as SpotLight$1, FrontSide, MeshBasicMaterial, MeshLambertMaterial, TextureLoader, MeshMatcapMaterial, MeshPhongMaterial, MeshStandardMaterial, MeshPhysicalMaterial, ShaderChunk, UniformsUtils, ShaderLib, ShaderMaterial as ShaderMaterial$1, MeshToonMaterial, CubeTextureLoader, CubeRefractionMapping, Mesh as Mesh$1, PlaneBufferGeometry, FontLoader, TextBufferGeometry, WebGLCubeRenderTarget, RGBFormat, LinearMipmapLinearFilter, CubeCamera, BackSide, DoubleSide, InstancedMesh as InstancedMesh$1, SpriteMaterial, Sprite as Sprite$1 } from 'three'; +import { h, toRef, watch, createApp as createApp$1 } from 'vue'; +import { Vector2, Vector3, Plane as Plane$1, Raycaster, WebGLRenderer, OrthographicCamera as OrthographicCamera$1, PerspectiveCamera as PerspectiveCamera$1, Group as Group$1, Scene as Scene$1, Color, BoxGeometry as BoxGeometry$1, CircleGeometry as CircleGeometry$1, ConeGeometry as ConeGeometry$1, CylinderGeometry as CylinderGeometry$1, DodecahedronGeometry as DodecahedronGeometry$1, IcosahedronGeometry as IcosahedronGeometry$1, LatheGeometry as LatheGeometry$1, OctahedronGeometry as OctahedronGeometry$1, PolyhedronGeometry as PolyhedronGeometry$1, RingGeometry as RingGeometry$1, SphereGeometry as SphereGeometry$1, TetrahedronGeometry as TetrahedronGeometry$1, TorusGeometry as TorusGeometry$1, TorusKnotGeometry as TorusKnotGeometry$1, Curve, TubeGeometry as TubeGeometry$1, AmbientLight as AmbientLight$1, DirectionalLight as DirectionalLight$1, HemisphereLight as HemisphereLight$1, PointLight as PointLight$1, RectAreaLight as RectAreaLight$1, SpotLight as SpotLight$1, FrontSide, MeshBasicMaterial, MeshLambertMaterial, TextureLoader, MeshMatcapMaterial, MeshPhongMaterial, MeshStandardMaterial, MeshPhysicalMaterial, ShaderChunk, UniformsUtils, ShaderLib, ShaderMaterial as ShaderMaterial$1, MeshToonMaterial, UVMapping, ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, CubeTextureLoader, CubeRefractionMapping, Mesh as Mesh$1, BoxBufferGeometry, CircleBufferGeometry, ConeBufferGeometry, CylinderBufferGeometry, DodecahedronBufferGeometry, IcosahedronBufferGeometry, LatheBufferGeometry, OctahedronBufferGeometry, PlaneBufferGeometry, PolyhedronBufferGeometry, RingBufferGeometry, SphereBufferGeometry, TetrahedronBufferGeometry, FontLoader, TextBufferGeometry, TorusBufferGeometry, TorusKnotBufferGeometry, CatmullRomCurve3, WebGLCubeRenderTarget, RGBFormat, CubeCamera, BackSide, DoubleSide, InstancedMesh as InstancedMesh$1, SpriteMaterial, Sprite as Sprite$1 } from 'three'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; +import { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js'; +import { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js'; import { EffectComposer as EffectComposer$1 } from 'three/examples/jsm/postprocessing/EffectComposer.js'; import { RenderPass as RenderPass$1 } from 'three/examples/jsm/postprocessing/RenderPass.js'; import { BokehPass as BokehPass$1 } from 'three/examples/jsm/postprocessing/BokehPass.js'; @@ -350,6 +352,7 @@ function useThree() { } var Renderer = { + name: 'Renderer', props: { antialias: Boolean, alpha: Boolean, @@ -395,7 +398,8 @@ var Renderer = { }; if (this.three.init(params)) { - this.three.renderer.shadowMap.enabled = this.shadow; + this.renderer = this.three.renderer; + this.renderer.shadowMap.enabled = this.shadow; if (this.three.composer) { this.animateC(); } else { this.animate(); } } @@ -427,6 +431,7 @@ var Renderer = { render: function render() { return h('canvas', {}, this.$slots.default()); }, + __hmrId: 'Renderer', }; function setFromProp(o, prop) { @@ -439,6 +444,17 @@ function setFromProp(o, prop) { }); } } +function bindProp(src, srcProp, dst, dstProp) { + if (!dstProp) { dstProp = srcProp; } + var ref = toRef(src, srcProp); + if (ref.value instanceof Object) { + setFromProp(dst[dstProp], ref.value); + watch(ref, function (value) { setFromProp(dst[dstProp], value); }, { deep: true }); + } else { + if (ref.value) { dst[dstProp] = src[srcProp]; } + watch(ref, function (value) { dst[dstProp] = value; }); + } +} function propsValues(props, exclude) { var values = {}; Object.entries(props).forEach(function (ref) { @@ -492,17 +508,8 @@ function getMatcapFormatString(format) { } } -function useBindProp(comp, prop, object) { - if (comp[prop]) { - var ref = toRef(comp, prop); - setFromProp(object, ref.value); - watch(ref, function () { - setFromProp(object, ref.value); - }, { deep: true }); - } -} - var OrthographicCamera = { + name: 'OrthographicCamera', inject: ['three'], props: { left: { type: Number, default: -1 }, @@ -512,13 +519,13 @@ var OrthographicCamera = { near: { type: Number, default: 0.1 }, far: { type: Number, default: 2000 }, zoom: { type: Number, default: 1 }, - position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, }, created: function created() { var this$1 = this; this.camera = new OrthographicCamera$1(this.left, this.right, this.top, this.bottom, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(function (p) { watch(function () { return this$1[p]; }, function () { @@ -529,27 +536,26 @@ var OrthographicCamera = { this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'OrthographicCamera', }; var PerspectiveCamera = { + name: 'PerspectiveCamera', inject: ['three'], props: { aspect: { type: Number, default: 1 }, far: { type: Number, default: 2000 }, fov: { type: Number, default: 50 }, near: { type: Number, default: 0.1 }, - position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } }, - lookAt: { type: [Object, Vector3], default: null }, + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + lookAt: { type: Object, default: null }, }, created: function created() { var this$1 = this; this.camera = new PerspectiveCamera$1(this.fov, this.aspect, this.near, this.far); - useBindProp(this, 'position', this.camera.position); + bindProp(this, 'position', this.camera); if (this.lookAt) { this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } watch(function () { return this$1.lookAt; }, function (v) { this$1.camera.lookAt(v.x, v.y, v.z); }, { deep: true }); @@ -561,54 +567,63 @@ var PerspectiveCamera = { }); }); - // this.camera.updateProjectionMatrix(); this.three.camera = this.camera; }, - render: function render() { - return []; - }, + render: function render() { return []; }, __hmrId: 'PerspectiveCamera', }; -var Group = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, +var Object3D = { + name: 'Object3D', + inject: ['three', 'scene', 'rendererComponent'], props: { - position: Object, - rotation: Object, - scale: Object, - }, - provide: function provide() { - return { - group: this.group, - }; - }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - - this.group = new Group$1(); - useBindProp(this, 'position', this.group.position); - useBindProp(this, 'rotation', this.group.rotation); - useBindProp(this, 'scale', this.group.scale); - - this.parent.add(this.group); + position: { type: Object, default: { x: 0, y: 0, z: 0 } }, + rotation: { type: Object, default: { x: 0, y: 0, z: 0 } }, + scale: { type: Object, default: { x: 1, y: 1, z: 1 } }, + lookAt: { type: Object, default: null }, }, + // can't use setup because it will not be used in sub components + // setup() {}, unmounted: function unmounted() { - this.parent.remove(this.group); + if (this.$parent.remove) { this.$parent.remove(this.o3d); } + }, + methods: { + initObject3D: function initObject3D(o3d) { + var this$1 = this; + + this.o3d = o3d; + + bindProp(this, 'position', this.o3d); + bindProp(this, 'rotation', this.o3d); + bindProp(this, 'scale', this.o3d); + + // fix lookat.x + if (this.lookAt) { this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z); } + watch(function () { return this$1.lookAt; }, function (v) { this$1.o3d.lookAt(v.x, v.y, v.z); }, { deep: true }); + + if (this.$parent.add) { this.$parent.add(this.o3d); } + }, + add: function add(o) { this.o3d.add(o); }, + remove: function remove(o) { this.o3d.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; + }, + __hmrId: 'Object3D', +}; + +var Group = { + name: 'Group', + extends: Object3D, + created: function created() { + this.group = new Group$1(); + this.initObject3D(this.group); }, __hmrId: 'Group', }; var Scene = { + name: 'Scene', inject: ['three'], props: { id: String, @@ -631,23 +646,16 @@ var Scene = { } }, methods: { - // add(o) { - // this.scene.add(o); - // }, - // remove(o) { - // this.scene.remove(o); - // }, + add: function add(o) { this.scene.add(o); }, + remove: function remove(o) { this.scene.remove(o); }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, + __hmrId: 'Scene', }; var Geometry = { - emits: ['ready'], inject: ['mesh'], props: { rotateX: Number, @@ -660,26 +668,20 @@ var Geometry = { if (!this.mesh) { console.error('Missing parent Mesh'); } + this.watchProps = []; Object.entries(this.$props).forEach(function (e) { return this$1.watchProps.push(e[0]); }); - }, - beforeMount: function beforeMount() { + this.createGeometry(); this.rotateGeometry(); this.mesh.setGeometry(this.geometry); - }, - mounted: function mounted() { + this.addWatchers(); }, unmounted: function unmounted() { this.geometry.dispose(); }, methods: { - rotateGeometry: function rotateGeometry() { - if (this.rotateX) { this.geometry.rotateX(this.rotateX); } - if (this.rotateY) { this.geometry.rotateY(this.rotateY); } - if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } - }, addWatchers: function addWatchers() { var this$1 = this; @@ -689,6 +691,11 @@ var Geometry = { }); }); }, + rotateGeometry: function rotateGeometry() { + if (this.rotateX) { this.geometry.rotateX(this.rotateX); } + if (this.rotateY) { this.geometry.rotateY(this.rotateY); } + if (this.rotateZ) { this.geometry.rotateZ(this.rotateZ); } + }, refreshGeometry: function refreshGeometry() { var oldGeo = this.geometry; this.createGeometry(); @@ -697,9 +704,7 @@ var Geometry = { oldGeo.dispose(); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var BoxGeometry = { @@ -719,7 +724,7 @@ var BoxGeometry = { if (this.size) { w = this.size; h = this.size; d = this.size; } - this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); + this.geometry = new BoxGeometry$1(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments); }, }, }; @@ -734,7 +739,7 @@ var CircleGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength); + this.geometry = new CircleGeometry$1(this.radius, this.segments, this.thetaStart, this.thetaLength); }, }, }; @@ -752,7 +757,7 @@ var ConeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new ConeGeometry$1(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -771,7 +776,7 @@ var CylinderGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); + this.geometry = new CylinderGeometry$1(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength); }, }, }; @@ -784,7 +789,7 @@ var DodecahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail); + this.geometry = new DodecahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -797,7 +802,7 @@ var IcosahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail); + this.geometry = new IcosahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -812,7 +817,7 @@ var LatheGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength); + this.geometry = new LatheGeometry$1(this.points, this.segments, this.phiStart, this.phiLength); }, }, }; @@ -825,7 +830,7 @@ var OctahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new OctahedronBufferGeometry(this.radius, this.detail); + this.geometry = new OctahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -840,7 +845,7 @@ var PolyhedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail); + this.geometry = new PolyhedronGeometry$1(this.vertices, this.indices, this.radius, this.detail); }, }, }; @@ -857,7 +862,7 @@ var RingGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); + this.geometry = new RingGeometry$1(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength); }, }, }; @@ -871,7 +876,7 @@ var SphereGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments); + this.geometry = new SphereGeometry$1(this.radius, this.widthSegments, this.heightSegments); }, }, }; @@ -884,7 +889,7 @@ var TetrahedronGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail); + this.geometry = new TetrahedronGeometry$1(this.radius, this.detail); }, }, }; @@ -900,7 +905,7 @@ var TorusGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); + this.geometry = new TorusGeometry$1(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc); }, }, }; @@ -917,7 +922,7 @@ var TorusKnotGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); + this.geometry = new TorusKnotGeometry$1(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q); }, }, }; @@ -933,70 +938,51 @@ var TubeGeometry = { }, methods: { createGeometry: function createGeometry() { - this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); + this.geometry = new TubeGeometry$1(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed); }, }, }; var Light = { - inject: { - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + name: 'Light', props: { - color: { - type: String, - default: '#ffffff', - }, - intensity: { - type: Number, - default: 1, - }, - castShadow: { - type: Boolean, - default: false, - }, - shadowMapSize: Object, - position: Object, + color: { type: String, default: '#ffffff' }, + intensity: { type: Number, default: 1 }, + castShadow: { type: Boolean, default: false }, + shadowMapSize: { type: Object, default: { x: 512, y: 512 } }, }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { - var this$1 = this; - - useBindProp(this, 'position', this.light.position); - - if (this.light.target) { - useBindProp(this, 'target', this.light.target.position); - } - - if (this.light.shadow) { - this.light.castShadow = this.castShadow; - setFromProp(this.light.shadow.mapSize, this.shadowMapSize); - } - - ['color', 'intensity', 'castShadow'].forEach(function (p) { - watch(function () { return this$1[p]; }, function () { - if (p === 'color') { - this$1.light.color = new Color(this$1.color); - } else { - this$1.light[p] = this$1[p]; - } - }); - }); - - this.parent.add(this.light); - if (this.light.target) { this.parent.add(this.light.target); } - }, unmounted: function unmounted() { - this.parent.remove(this.light); - if (this.light.target) { this.parent.remove(this.light.target); } + if (this.light.target) { this.$parent.remove(this.light.target); } }, - render: function render() { - return []; + methods: { + initLight: function initLight() { + var this$1 = this; + + if (this.light.target) { + bindProp(this, 'target', this.light.target, 'position'); + } + + if (this.light.shadow) { + this.light.castShadow = this.castShadow; + setFromProp(this.light.shadow.mapSize, this.shadowMapSize); + } + + ['color', 'intensity', 'castShadow'].forEach(function (p) { + watch(function () { return this$1[p]; }, function () { + if (p === 'color') { + this$1.light.color = new Color(this$1.color); + } else { + this$1.light[p] = this$1[p]; + } + }); + }); + + this.initObject3D(this.light); + if (this.light.target) { this.$parent.add(this.light.target); } + }, }, __hmrId: 'Light', }; @@ -1005,6 +991,7 @@ var AmbientLight = { extends: Light, created: function created() { this.light = new AmbientLight$1(this.color, this.intensity); + this.initLight(); }, __hmrId: 'AmbientLight', }; @@ -1016,10 +1003,24 @@ var DirectionalLight = { }, created: function created() { this.light = new DirectionalLight$1(this.color, this.intensity); + this.initLight(); }, __hmrId: 'DirectionalLight', }; +var HemisphereLight = { + extends: Light, + props: { + groundColor: { type: String, default: '#ffffff' }, + }, + created: function created() { + this.light = new HemisphereLight$1(this.color, this.groundColor, this.intensity); + bindProp(this, 'groundColor', this.light); + this.initLight(); + }, + __hmrId: 'HemisphereLight', +}; + var PointLight = { extends: Light, props: { @@ -1034,29 +1035,50 @@ var PointLight = { }, created: function created() { this.light = new PointLight$1(this.color, this.intensity, this.distance, this.decay); + this.initLight(); }, __hmrId: 'PointLight', }; +var RectAreaLight = { + extends: Light, + props: { + width: { type: Number, default: 10 }, + height: { type: Number, default: 10 }, + helper: Boolean, + }, + created: function created() { + var this$1 = this; + + RectAreaLightUniformsLib.init(); + this.light = new RectAreaLight$1(this.color, this.intensity, this.width, this.height); + + ['width', 'height'].forEach(function (p) { + watch(function () { return this$1[p]; }, function () { + this$1.light[p] = this$1[p]; + }); + }); + + if (this.helper) { + this.lightHelper = new RectAreaLightHelper(this.light); + this.$parent.add(this.lightHelper); + } + + this.initLight(); + }, + unmounted: function unmounted() { + if (this.lightHelper) { this.$parent.remove(this.lightHelper); } + }, + __hmrId: 'RectAreaLight', +}; + var SpotLight = { extends: Light, props: { - angle: { - type: Number, - default: Math.PI / 3, - }, - decay: { - type: Number, - default: 1, - }, - distance: { - type: Number, - default: 0, - }, - penumbra: { - type: Number, - default: 0, - }, + angle: { type: Number, default: Math.PI / 3 }, + decay: { type: Number, default: 1 }, + distance: { type: Number, default: 0 }, + penumbra: { type: Number, default: 0 }, target: Object, }, created: function created() { @@ -1068,6 +1090,7 @@ var SpotLight = { this$1.light[p] = this$1[p]; }); }); + this.initLight(); }, __hmrId: 'SpotLight', }; @@ -1075,7 +1098,6 @@ var SpotLight = { var Material = { inject: ['three', 'mesh'], props: { - id: String, color: { type: [String, Number], default: '#ffffff' }, depthTest: { type: Boolean, default: true }, depthWrite: { type: Boolean, default: true }, @@ -1091,18 +1113,15 @@ var Material = { material: this, }; }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { + this._addWatchers(); if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, methods: { setProp: function setProp(key, value, needsUpdate) { @@ -1132,10 +1151,7 @@ var Material = { }, }, render: function render() { - if (this.$slots.default) { - return this.$slots.default(); - } - return []; + return this.$slots.default ? this.$slots.default() : []; }, __hmrId: 'Material', }; @@ -1144,7 +1160,7 @@ var BasicMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshBasicMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshBasicMaterial(propsValues(this.$props)); }, }, __hmrId: 'BasicMaterial', @@ -1154,7 +1170,7 @@ var LambertMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshLambertMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshLambertMaterial(propsValues(this.$props)); }, }, __hmrId: 'LambertMaterial', @@ -1169,7 +1185,7 @@ var MatcapMaterial = { methods: { createMaterial: function createMaterial() { var src = this.name ? getMatcapUrl(this.name) : this.src; - var opts = propsValues(this.$props, ['id', 'src', 'name']); + var opts = propsValues(this.$props, ['src', 'name']); opts.matcap = new TextureLoader().load(src); this.material = new MeshMatcapMaterial(opts); }, @@ -1188,7 +1204,7 @@ var PhongMaterial = { }, methods: { createMaterial: function createMaterial() { - this.material = new MeshPhongMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshPhongMaterial(propsValues(this.$props)); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1217,7 +1233,7 @@ var props = { envMapIntensity: { type: Number, default: 1 }, lightMapIntensity: { type: Number, default: 1 }, metalness: { type: Number, default: 0 }, - normalScale: { type: Object, default: function () { return new Vector2(1, 1); } }, + normalScale: { type: Object, default: { x: 1, y: 1 } }, roughness: { type: Number, default: 1 }, refractionRatio: { type: Number, default: 0.98 }, wireframe: Boolean, @@ -1228,7 +1244,7 @@ var StandardMaterial = { props: props, methods: { createMaterial: function createMaterial() { - this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale'])); + this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale'])); }, addWatchers: function addWatchers() { var this$1 = this; @@ -1244,7 +1260,7 @@ var StandardMaterial = { } }); }); - useBindProp(this, 'normalScale', this.material.normalScale); + bindProp(this, 'normalScale', this.material); }, }, __hmrId: 'StandardMaterial', @@ -1254,7 +1270,7 @@ var PhysicalMaterial = { extends: StandardMaterial, methods: { createMaterial: function createMaterial() { - this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshPhysicalMaterial(propsValues(this.$props)); }, }, __hmrId: 'PhysicalMaterial', @@ -1304,22 +1320,17 @@ var SubsurfaceScatteringShader = { var ShaderMaterial = { inject: ['three', 'mesh'], props: { - id: String, uniforms: Object, vertexShader: String, fragmentShader: String, }, - beforeMount: function beforeMount() { + created: function created() { this.createMaterial(); - if (this.id) { this.three.materials[this.id] = this.material; } this.mesh.setMaterial(this.material); - }, - mounted: function mounted() { if (this.addWatchers) { this.addWatchers(); } }, unmounted: function unmounted() { this.material.dispose(); - if (this.id) { delete this.three.materials[this.id]; } }, render: function render() { return []; @@ -1355,7 +1366,7 @@ var SubSurfaceMaterial = { if (key === 'color') { _key = 'diffuse'; } _value = new Color(value); } - if (!['id', 'transparent', 'vertexColors'].includes(key)) { + if (!['transparent', 'vertexColors'].includes(key)) { uniforms[_key].value = _value; } }); @@ -1374,7 +1385,7 @@ var ToonMaterial = { extends: Material, methods: { createMaterial: function createMaterial() { - this.material = new MeshToonMaterial(propsValues(this.$props, ['id'])); + this.material = new MeshToonMaterial(propsValues(this.$props)); }, }, __hmrId: 'ToonMaterial', @@ -1384,11 +1395,19 @@ var Texture = { inject: ['material'], emits: ['loaded'], props: { + id: { type: String, default: 'map' }, src: String, onLoad: Function, onProgress: Function, onError: Function, - id: { type: String, default: 'map' }, + mapping: { type: Number, default: UVMapping }, + wrapS: { type: Number, default: ClampToEdgeWrapping }, + wrapT: { type: Number, default: ClampToEdgeWrapping }, + magFilter: { type: Number, default: LinearFilter }, + minFilter: { type: Number, default: LinearMipmapLinearFilter }, + repeat: { type: Object, default: { x: 1, y: 1 } }, + rotation: { type: Number, default: 0 }, + center: { type: Object, default: { x: 0, y: 0 } }, }, created: function created() { var this$1 = this; @@ -1402,7 +1421,13 @@ var Texture = { }, methods: { createTexture: function createTexture() { + var this$1 = this; + this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError); + var wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center']; + wathProps.forEach(function (prop) { + bindProp(this$1, prop, this$1.texture); + }); }, refreshTexture: function refreshTexture() { this.createTexture(); @@ -1413,9 +1438,7 @@ var Texture = { this.$emit('loaded'); }, }, - render: function render() { - return []; - }, + render: function render() { return []; }, }; var CubeTexture = { @@ -1471,18 +1494,9 @@ var CubeTexture = { }; var Mesh = { - inject: { - three: 'three', - scene: 'scene', - rendererComponent: 'rendererComponent', - group: { default: null }, - }, - emits: ['ready'], + extends: Object3D, + name: 'Mesh', props: { - materialId: String, - position: Object, - rotation: Object, - scale: Object, castShadow: Boolean, receiveShadow: Boolean, onHover: Function, @@ -1490,34 +1504,25 @@ var Mesh = { }, // can't use setup because it will not be used in sub components // setup() {}, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, provide: function provide() { return { mesh: this, }; }, mounted: function mounted() { - if (this.geometry && !this.mesh) { this.initMesh(); } - }, - unmounted: function unmounted() { - if (this.mesh) { - this.three.removeIntersectObject(this.mesh); - this.parent.remove(this.mesh); - } - if (this.geometry) { this.geometry.dispose(); } - if (this.material && !this.materialId) { this.material.dispose(); } + if (!this.mesh && !this.loading) { this.initMesh(); } }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } this.mesh = new Mesh$1(this.geometry, this.material); + ['castShadow', 'receiveShadow'].forEach(function (p) { + this$1.mesh[p] = this$1[p]; + watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); + }); + if (this.onHover) { this.mesh.onHover = function (over) { this$1.onHover({ component: this$1, over: over }); }; this.three.addIntersectObject(this.mesh); @@ -1528,25 +1533,7 @@ var Mesh = { this.three.addIntersectObject(this.mesh); } - this.bindProps(); - this.parent.add(this.mesh); - this.$emit('ready'); - }, - bindProps: function bindProps() { - var this$1 = this; - - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - - ['castShadow', 'receiveShadow'].forEach(function (p) { - this$1.mesh[p] = this$1[p]; - watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); - }); - - watch(function () { return this$1.materialId; }, function () { - this$1.mesh.material = this$1.three.materials[this$1.materialId]; - }); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -1563,11 +1550,13 @@ var Mesh = { oldGeo.dispose(); }, }, - render: function render() { - if (this.$slots.default) { - return this.$slots.default(); + unmounted: function unmounted() { + if (this.mesh) { + this.three.removeIntersectObject(this.mesh); } - return []; + // for predefined mesh (geometry and material are not unmounted) + if (this.geometry) { this.geometry.dispose(); } + if (this.material) { this.material.dispose(); } }, __hmrId: 'Mesh', }; @@ -1956,6 +1945,11 @@ var TextProps = { var Text = { extends: Mesh, props: Object.assign({}, TextProps), + data: function data() { + return { + loading: true, + }; + }, created: function created() { var this$1 = this; @@ -1972,6 +1966,7 @@ var Text = { var loader = new FontLoader(); loader.load(this.fontSrc, function (font) { + this$1.loading = false; this$1.font = font; this$1.createGeometry(); this$1.initMesh(); @@ -2062,6 +2057,7 @@ var Tube = { extends: Mesh, props: { path: Curve, + points: Array, tubularSegments: { type: Number, default: 64 }, radius: { type: Number, default: 1 }, radialSegments: { type: Number, default: 8 }, @@ -2071,22 +2067,84 @@ var Tube = { var this$1 = this; this.createGeometry(); - - var watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed']; + var watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed']; watchProps.forEach(function (prop) { - watch(function () { return this$1[prop]; }, function () { + watch(function () { return this$1[prop]; }, function (v) { this$1.refreshGeometry(); }); }); + // watch(() => this.points, () => { + // this.updatePoints(); + // }); }, methods: { createGeometry: function createGeometry() { - this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed); + var curve; + if (this.points) { + curve = new CatmullRomCurve3(this.points); + } else if (this.path) { + curve = this.path; + } else { + console.error('Missing path curve or points.'); + } + this.geometry = new TubeGeometry$1(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed); + }, + updateCurve: function updateCurve() { + updateTubeGeometryPoints(this.geometry, this.points); }, }, __hmrId: 'Tube', }; +function updateTubeGeometryPoints(tube, points) { + var curve = new CatmullRomCurve3(points); + var ref = tube.parameters; + var radialSegments = ref.radialSegments; + var radius = ref.radius; + var tubularSegments = ref.tubularSegments; + var closed = ref.closed; + var frames = curve.computeFrenetFrames(tubularSegments, closed); + tube.tangents = frames.tangents; + tube.normals = frames.normals; + tube.binormals = frames.binormals; + tube.parameters.path = curve; + + var pArray = tube.attributes.position.array; + var nArray = tube.attributes.normal.array; + var normal = new Vector3(); + var P; + + for (var i = 0; i < tubularSegments; i++) { + updateSegment(i); + } + updateSegment(tubularSegments); + + tube.attributes.position.needsUpdate = true; + tube.attributes.normal.needsUpdate = true; + + function updateSegment(i) { + P = curve.getPointAt(i / tubularSegments, P); + var N = frames.normals[i]; + var B = frames.binormals[i]; + for (var j = 0; j <= radialSegments; j++) { + var v = j / radialSegments * Math.PI * 2; + var sin = Math.sin(v); + var cos = -Math.cos(v); + normal.x = (cos * N.x + sin * B.x); + normal.y = (cos * N.y + sin * B.y); + normal.z = (cos * N.z + sin * B.z); + normal.normalize(); + var index = (i * (radialSegments + 1) + j) * 3; + nArray[index] = normal.x; + nArray[index + 1] = normal.y; + nArray[index + 2] = normal.z; + pArray[index] = P.x + radius * normal.x; + pArray[index + 1] = P.y + radius * normal.y; + pArray[index + 2] = P.z + radius * normal.z; + } + } +} + var Gem = { extends: Mesh, props: { @@ -2102,15 +2160,15 @@ var Gem = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.meshBack) { this.parent.remove(this.meshBack); } + if (this.meshBack) { this.$parent.remove(this.meshBack); } if (this.materialBack) { this.materialBack.dispose(); } }, methods: { initGem: function initGem() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.side = FrontSide; this.material.envMap = cubeRT.texture; @@ -2131,10 +2189,10 @@ var Gem = { this.meshBack = new Mesh$1(this.geometry, this.materialBack); - useBindProp(this, 'position', this.meshBack.position); - useBindProp(this, 'rotation', this.meshBack.rotation); - useBindProp(this, 'scale', this.meshBack.scale); - this.parent.add(this.meshBack); + bindProp(this, 'position', this.meshBack); + bindProp(this, 'rotation', this.meshBack); + bindProp(this, 'scale', this.meshBack); + this.$parent.add(this.meshBack); }, updateCubeRT: function updateCubeRT() { this.mesh.visible = false; @@ -2216,61 +2274,37 @@ var Image = { }; var InstancedMesh = { - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, props: { - materialId: String, - count: Number, - position: Object, castShadow: Boolean, receiveShadow: Boolean, + count: Number, }, provide: function provide() { return { mesh: this, }; }, - created: function created() { - this.parent = this.group ? this.group : this.scene; - }, beforeMount: function beforeMount() { if (!this.$slots.default) { console.error('Missing Geometry'); } }, - mounted: function mounted() { + created: function created() { this.initMesh(); }, - unmounted: function unmounted() { - this.parent.remove(this.mesh); - }, methods: { initMesh: function initMesh() { var this$1 = this; - if (!this.material && this.materialId) { - this.material = this.three.materials[this.materialId]; - } - this.mesh = new InstancedMesh$1(this.geometry, this.material, this.count); - useBindProp(this, 'position', this.mesh.position); - useBindProp(this, 'rotation', this.mesh.rotation); - useBindProp(this, 'scale', this.mesh.scale); - ['castShadow', 'receiveShadow'].forEach(function (p) { this$1.mesh[p] = this$1[p]; watch(function () { return this$1[p]; }, function () { this$1.mesh[p] = this$1[p]; }); }); - // watch(() => this.materialId, () => { - // this.mesh.material = this.three.materials[this.materialId]; - // }); - - this.parent.add(this.mesh); + this.initObject3D(this.mesh); }, setGeometry: function setGeometry(geometry) { this.geometry = geometry; @@ -2281,9 +2315,6 @@ var InstancedMesh = { if (this.mesh) { this.mesh.material = material; } }, }, - render: function render() { - return this.$slots.default(); - }, __hmrId: 'InstancedMesh', }; @@ -2302,13 +2333,13 @@ var MirrorMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - this.parent.add(this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.needsUpdate = true; @@ -2338,14 +2369,14 @@ var RefractionMesh = { }, unmounted: function unmounted() { this.three.offBeforeRender(this.updateCubeRT); - if (this.cubeCamera) { this.parent.remove(this.cubeCamera); } + if (this.cubeCamera) { this.$parent.remove(this.cubeCamera); } }, methods: { initMirrorMesh: function initMirrorMesh() { var cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter }); this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT); - useBindProp(this, 'position', this.cubeCamera.position); - this.parent.add(this.cubeCamera); + bindProp(this, 'position', this.cubeCamera); + this.$parent.add(this.cubeCamera); this.material.envMap = cubeRT.texture; this.material.refractionRatio = this.refractionRatio; @@ -2361,38 +2392,30 @@ var RefractionMesh = { }; var Sprite = { - emits: ['ready', 'loaded'], - inject: { - three: 'three', - scene: 'scene', - group: { default: null }, - }, + extends: Object3D, + emits: ['loaded'], props: { src: String, - position: Object, - scale: Object, + }, + data: function data() { + return { + loading: true, + }; }, created: function created() { - this.parent = this.group ? this.group : this.scene; - }, - mounted: function mounted() { this.texture = new TextureLoader().load(this.src, this.onLoaded); this.material = new SpriteMaterial({ map: this.texture }); this.sprite = new Sprite$1(this.material); this.geometry = this.sprite.geometry; - useBindProp(this, 'position', this.sprite.position); - useBindProp(this, 'scale', this.sprite.scale); - - this.parent.add(this.sprite); - this.$emit('ready'); + this.initObject3D(this.sprite); }, unmounted: function unmounted() { this.texture.dispose(); this.material.dispose(); - this.parent.remove(this.sprite); }, methods: { onLoaded: function onLoaded() { + this.loading = false; this.updateUV(); this.$emit('loaded'); }, @@ -2416,9 +2439,6 @@ var Sprite = { this.geometry.attributes.position.needsUpdate = true; }, }, - render: function render() { - return []; - }, __hmrId: 'Sprite', }; @@ -2656,17 +2676,6 @@ var TiltShift = { fragmentShader: "\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n ", }; -function useBindPropValue(src, srcProp, dst, dstProp) { - if ( dstProp === void 0 ) dstProp = 'value'; - - if (src[srcProp]) { - dst[dstProp] = src[srcProp]; - watch(function () { return src[srcProp]; }, function (value) { - dst[dstProp] = value; - }); - } -} - var TiltShiftPass = { extends: EffectPass, props: { @@ -2692,8 +2701,8 @@ var TiltShiftPass = { uniforms1.end = uniforms.end; uniforms1.texSize = uniforms.texSize; - useBindPropValue(this, 'blurRadius', uniforms.blurRadius); - useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius); + bindProp(this, 'blurRadius', uniforms.blurRadius, 'value'); + bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value'); this.updateFocusLine(); ['start', 'end'].forEach(function (p) { @@ -2760,8 +2769,8 @@ var ZoomBlurPass = { this.passes.push(this.pass); var uniforms = this.uniforms = this.pass.uniforms; - useBindProp(this, 'center', uniforms.center.value); - useBindPropValue(this, 'strength', uniforms.strength); + bindProp(this, 'center', uniforms.center, 'value'); + bindProp(this, 'strength', uniforms.strength, 'value'); }, __hmrId: 'ZoomBlurPass', }; @@ -2791,7 +2800,9 @@ var TROIS = /*#__PURE__*/Object.freeze({ TubeGeometry: TubeGeometry, AmbientLight: AmbientLight, DirectionalLight: DirectionalLight, + HemisphereLight: HemisphereLight, PointLight: PointLight, + RectAreaLight: RectAreaLight, SpotLight: SpotLight, BasicMaterial: BasicMaterial, LambertMaterial: LambertMaterial, @@ -2838,6 +2849,7 @@ var TROIS = /*#__PURE__*/Object.freeze({ UnrealBloomPass: UnrealBloomPass, ZoomBlurPass: ZoomBlurPass, setFromProp: setFromProp, + bindProp: bindProp, propsValues: propsValues, lerp: lerp, lerpv2: lerpv2, @@ -2874,7 +2886,9 @@ var TroisJSVuePlugin = { 'AmbientLight', 'DirectionalLight', + 'HemisphereLight', 'PointLight', + 'RectAreaLight', 'SpotLight', 'BasicMaterial', @@ -2936,5 +2950,9 @@ var TroisJSVuePlugin = { }, }; -export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, Gem, Group, HalftonePass, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; +function createApp(params) { + return createApp$1(params).use(TroisJSVuePlugin); +} + +export { AmbientLight, BasicMaterial, BokehPass, Box, BoxGeometry, PerspectiveCamera as Camera, Circle, CircleGeometry, Cone, ConeGeometry, CubeTexture, Cylinder, CylinderGeometry, DirectionalLight, Dodecahedron, DodecahedronGeometry, EffectComposer, FXAAPass, FilmPass, Gem, Group, HalftonePass, HemisphereLight, Icosahedron, IcosahedronGeometry, Image, InstancedMesh, LambertMaterial, Lathe, LatheGeometry, MatcapMaterial, Mesh, MirrorMesh, Octahedron, OctahedronGeometry, OrthographicCamera, PerspectiveCamera, PhongMaterial, PhysicalMaterial, Plane, PointLight, Polyhedron, PolyhedronGeometry, RectAreaLight, RefractionMesh, RenderPass, Renderer, Ring, RingGeometry, SMAAPass, Scene, Sphere, SphereGeometry, SpotLight, Sprite, StandardMaterial, SubSurfaceMaterial, Tetrahedron, TetrahedronGeometry, Text, Texture, TiltShiftPass, ToonMaterial, Torus, TorusGeometry, TorusKnot, TorusKnotGeometry, TroisJSVuePlugin, Tube, TubeGeometry, UnrealBloomPass, ZoomBlurPass, bindProp, createApp, getMatcapUrl, lerp, lerpv2, lerpv3, limit, propsValues, setFromProp }; //# sourceMappingURL=trois.module.js.map diff --git a/build/trois.module.js.map b/build/trois.module.js.map index bd44240..65dbe19 100644 --- a/build/trois.module.js.map +++ b/build/trois.module.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: [Object, Vector3], default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n // this.camera.updateProjectionMatrix();\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: {\r\n three: 'three',\r\n scene: 'scene',\r\n group: { default: null },\r\n },\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent = this.group ? this.group : this.scene;\r\n\r\n this.group = new Group();\r\n useBindProp(this, 'position', this.group.position);\r\n useBindProp(this, 'rotation', this.group.rotation);\r\n useBindProp(this, 'scale', this.group.scale);\r\n\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n group: { default: null },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['id', 'transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n group: { default: null },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","AmbientLight","DirectionalLight","PointLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Object3D.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/HemisphereLight.js","../src/lights/PointLight.js","../src/lights/RectAreaLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n name: 'Renderer',\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.renderer = this.three.renderer;\n this.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n __hmrId: 'Renderer',\n};\n","import { toRef, watch } from 'vue';\n\nexport function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function bindProp(src, srcProp, dst, dstProp) {\n if (!dstProp) dstProp = srcProp;\n const ref = toRef(src, srcProp);\n if (ref.value instanceof Object) {\n setFromProp(dst[dstProp], ref.value);\n watch(ref, (value) => { setFromProp(dst[dstProp], value); }, { deep: true });\n } else {\n if (ref.value) dst[dstProp] = src[srcProp];\n watch(ref, (value) => { dst[dstProp] = value; });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { OrthographicCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'OrthographicCamera',\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'PerspectiveCamera',\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: Object, default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'PerspectiveCamera',\n};\n","import { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'Object3D',\n inject: ['three', 'scene', 'rendererComponent'],\n props: {\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n rotation: { type: Object, default: { x: 0, y: 0, z: 0 } },\n scale: { type: Object, default: { x: 1, y: 1, z: 1 } },\n lookAt: { type: Object, default: null },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.$parent.remove) this.$parent.remove(this.o3d);\n },\n methods: {\n initObject3D(o3d) {\n this.o3d = o3d;\n\n bindProp(this, 'position', this.o3d);\n bindProp(this, 'rotation', this.o3d);\n bindProp(this, 'scale', this.o3d);\n\n // fix lookat.x\n if (this.lookAt) this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.o3d.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n if (this.$parent.add) this.$parent.add(this.o3d);\n },\n add(o) { this.o3d.add(o); },\n remove(o) { this.o3d.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Object3D',\n};\n","import { Group } from 'three';\nimport Object3D from './Object3D.js';\n\nexport default {\n name: 'Group',\n extends: Object3D,\n created() {\n this.group = new Group();\n this.initObject3D(this.group);\n },\n __hmrId: 'Group',\n};\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n name: 'Scene',\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n add(o) { this.scene.add(o); },\n remove(o) { this.scene.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Scene',\n};\n","import { watch } from 'vue';\n\nexport default {\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() { return []; },\n};\n","import { BoxGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport Object3D from '../core/Object3D.js';\nimport { bindProp, setFromProp } from '../tools.js';\n\nexport default {\n extends: Object3D,\n name: 'Light',\n props: {\n color: { type: String, default: '#ffffff' },\n intensity: { type: Number, default: 1 },\n castShadow: { type: Boolean, default: false },\n shadowMapSize: { type: Object, default: { x: 512, y: 512 } },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.light.target) this.$parent.remove(this.light.target);\n },\n methods: {\n initLight() {\n if (this.light.target) {\n bindProp(this, 'target', this.light.target, 'position');\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.initObject3D(this.light);\n if (this.light.target) this.$parent.add(this.light.target);\n },\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'DirectionalLight',\n};\n","import { HemisphereLight } from 'three';\nimport Light from './Light.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Light,\n props: {\n groundColor: { type: String, default: '#ffffff' },\n },\n created() {\n this.light = new HemisphereLight(this.color, this.groundColor, this.intensity);\n bindProp(this, 'groundColor', this.light);\n this.initLight();\n },\n __hmrId: 'HemisphereLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n this.initLight();\n },\n __hmrId: 'PointLight',\n};\n","import { RectAreaLight } from 'three';\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';\nimport { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n width: { type: Number, default: 10 },\n height: { type: Number, default: 10 },\n helper: Boolean,\n },\n created() {\n RectAreaLightUniformsLib.init();\n this.light = new RectAreaLight(this.color, this.intensity, this.width, this.height);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n\n if (this.helper) {\n this.lightHelper = new RectAreaLightHelper(this.light);\n this.$parent.add(this.lightHelper);\n }\n\n this.initLight();\n },\n unmounted() {\n if (this.lightHelper) this.$parent.remove(this.lightHelper);\n },\n __hmrId: 'RectAreaLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: { type: Number, default: Math.PI / 3 },\n decay: { type: Number, default: 1 },\n distance: { type: Number, default: 0 },\n penumbra: { type: Number, default: 0 },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n this.initLight();\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial } from 'three';\nimport { watch } from 'vue';\nimport { bindProp, propsValues } from '../tools.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: { x: 1, y: 1 } },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n bindProp(this, 'normalScale', this.material);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, TextureLoader, UVMapping } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n id: { type: String, default: 'map' },\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n mapping: { type: Number, default: UVMapping },\n wrapS: { type: Number, default: ClampToEdgeWrapping },\n wrapT: { type: Number, default: ClampToEdgeWrapping },\n magFilter: { type: Number, default: LinearFilter },\n minFilter: { type: Number, default: LinearMipmapLinearFilter },\n repeat: { type: Object, default: { x: 1, y: 1 } },\n rotation: { type: Number, default: 0 },\n center: { type: Object, default: { x: 0, y: 0 } },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n const wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center'];\n wathProps.forEach(prop => {\n bindProp(this, prop, this.texture);\n });\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() { return []; },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { watch } from 'vue';\nimport { Mesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n name: 'Mesh',\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (!this.mesh && !this.loading) this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new Mesh(this.geometry, this.material);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n }\n // for predefined mesh (geometry and material are not unmounted)\n if (this.geometry) this.geometry.dispose();\n if (this.material) this.material.dispose();\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.loading = false;\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { CatmullRomCurve3, Curve, TubeGeometry, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n points: Array,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n const watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], (v) => {\n this.refreshGeometry();\n });\n });\n // watch(() => this.points, () => {\n // this.updatePoints();\n // });\n },\n methods: {\n createGeometry() {\n let curve;\n if (this.points) {\n curve = new CatmullRomCurve3(this.points);\n } else if (this.path) {\n curve = this.path;\n } else {\n console.error('Missing path curve or points.');\n }\n this.geometry = new TubeGeometry(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n updateCurve() {\n updateTubeGeometryPoints(this.geometry, this.points);\n },\n },\n __hmrId: 'Tube',\n};\n\nfunction updateTubeGeometryPoints(tube, points) {\n const curve = new CatmullRomCurve3(points);\n const { radialSegments, radius, tubularSegments, closed } = tube.parameters;\n const frames = curve.computeFrenetFrames(tubularSegments, closed);\n tube.tangents = frames.tangents;\n tube.normals = frames.normals;\n tube.binormals = frames.binormals;\n tube.parameters.path = curve;\n\n const pArray = tube.attributes.position.array;\n const nArray = tube.attributes.normal.array;\n const normal = new Vector3();\n let P;\n\n for (let i = 0; i < tubularSegments; i++) {\n updateSegment(i);\n }\n updateSegment(tubularSegments);\n\n tube.attributes.position.needsUpdate = true;\n tube.attributes.normal.needsUpdate = true;\n\n function updateSegment(i) {\n P = curve.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = (cos * N.x + sin * B.x);\n normal.y = (cos * N.y + sin * B.y);\n normal.z = (cos * N.z + sin * B.z);\n normal.normalize();\n const index = (i * (radialSegments + 1) + j) * 3;\n nArray[index] = normal.x;\n nArray[index + 1] = normal.y;\n nArray[index + 2] = normal.z;\n pArray[index] = P.x + radius * normal.x;\n pArray[index + 1] = P.y + radius * normal.y;\n pArray[index + 2] = P.z + radius * normal.z;\n }\n }\n}\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.$parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n bindProp(this, 'position', this.meshBack);\n bindProp(this, 'rotation', this.meshBack);\n bindProp(this, 'scale', this.meshBack);\n this.$parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { watch } from 'vue';\nimport { InstancedMesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n count: Number,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n created() {\n this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n emits: ['loaded'],\n props: {\n src: String,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n this.initObject3D(this.sprite);\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n },\n methods: {\n onLoaded() {\n this.loading = false;\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n bindProp(this, 'blurRadius', uniforms.blurRadius, 'value');\n bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value');\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n bindProp(this, 'center', uniforms.center, 'value');\n bindProp(this, 'strength', uniforms.strength, 'value');\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import { createApp as _createApp } from 'vue';\nimport * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'HemisphereLight',\n 'PointLight',\n 'RectAreaLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n\nexport function createApp(params) {\n return _createApp(params).use(TroisJSVuePlugin);\n};\n"],"names":["const","let","Plane","i","o","OrthographicCamera","this","PerspectiveCamera","Group","Scene","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","HemisphereLight","PointLight","RectAreaLight","SpotLight","TShaderMaterial","Mesh","TMesh","InstancedMesh","Sprite","EffectComposer","RenderPass","BokehPass","FilmPass","HalftonePass","SMAAPass","UnrealBloomPass","_createApp"],"mappings":"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"} \ No newline at end of file diff --git a/build/trois.module.min.js b/build/trois.module.min.js index 1f640ef..1b0175b 100644 --- a/build/trois.module.min.js +++ b/build/trois.module.min.js @@ -1,2 +1,2 @@ -import{h as e,toRef as t,watch as i}from"vue";import{Vector2 as r,Vector3 as s,Plane as n,Raycaster as a,WebGLRenderer as o,OrthographicCamera as h,PerspectiveCamera as u,Group as d,Scene as m,Color as c,BoxBufferGeometry as l,CircleBufferGeometry as f,ConeBufferGeometry as p,CylinderBufferGeometry as g,DodecahedronBufferGeometry as y,IcosahedronBufferGeometry as b,LatheBufferGeometry as v,OctahedronBufferGeometry as S,PolyhedronBufferGeometry as N,RingBufferGeometry as w,SphereBufferGeometry as x,TetrahedronBufferGeometry as _,TorusBufferGeometry as C,TorusKnotBufferGeometry as M,Curve as G,TubeBufferGeometry as I,AmbientLight as z,DirectionalLight as P,PointLight as R,SpotLight as B,FrontSide as k,MeshBasicMaterial as E,MeshLambertMaterial as L,TextureLoader as j,MeshMatcapMaterial as T,MeshPhongMaterial as O,MeshStandardMaterial as A,MeshPhysicalMaterial as F,ShaderChunk as U,UniformsUtils as D,ShaderLib as $,ShaderMaterial as H,MeshToonMaterial as W,CubeTextureLoader as V,CubeRefractionMapping as X,Mesh as q,PlaneBufferGeometry as Z,FontLoader as K,TextBufferGeometry as Y,WebGLCubeRenderTarget as J,RGBFormat as Q,LinearMipmapLinearFilter as ee,CubeCamera as te,BackSide as ie,DoubleSide as re,InstancedMesh as se,SpriteMaterial as ne,Sprite as ae}from"three";import{OrbitControls as oe}from"three/examples/jsm/controls/OrbitControls.js";import{EffectComposer as he}from"three/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as ue}from"three/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as de}from"three/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as me}from"three/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as ce}from"three/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as le}from"three/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as fe}from"three/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as pe}from"three/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as ge}from"three/examples/jsm/postprocessing/UnrealBloomPass.js";function ye(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},i=[],h=[],u=[],d=new r,m=new s,c=new n(new s(0,0,1),0),l=new a,f=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:d,mouseV3:m,init:function(t){t&&Object.entries(t).forEach((function(t){var i=t[0],r=t[1];e[i]=r}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new o({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new oe(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],i=e[1];p.orbitCtrl[t]=i})));e.resize?(N(),window.addEventListener("resize",N)):w(300|e.width,150|e.height);e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",b),p.mouse_move_element.addEventListener("mouseleave",v));e.click&&p.renderer.domElement.addEventListener("click",y);return i.forEach((function(e){return e()})),!0},dispose:function(){u=[],window.removeEventListener("resize",N),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",b),p.mouse_move_element.removeEventListener("mouseleave",v));p.renderer.domElement.removeEventListener("click",y),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.composer.render()},setSize:w,onAfterInit:function(e){i.push(e)},onAfterResize:function(e){h.push(e)},offAfterResize:function(e){h=h.filter((function(t){return t!==e}))},onBeforeRender:function(e){u.push(e)},offBeforeRender:function(e){u=u.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===f.indexOf(e)&&f.push(e)},removeIntersectObject:function(e){var t=f.indexOf(e);-1!==t&&f.splice(t,1)}};function g(e){var i=e.target.getBoundingClientRect();d.x=(e.clientX-i.left)/t.width*2-1,d.y=-(e.clientY-i.top)/t.height*2+1}function y(e){g(e),l.setFromCamera(d,p.camera);for(var t=l.intersectObjects(f),i=0;i1?1:i)}function we(e,t,i){e.x=Ne(e.x,t.x,i),e.y=Ne(e.y,t.y,i)}function xe(e,t,i){e.x=Ne(e.x,t.x,i),e.y=Ne(e.y,t.y,i),e.z=Ne(e.z,t.z,i)}function _e(e,t,i){return ei?i:e}function Ce(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}function Me(e,r,s){if(e[r]){var n=t(e,r);ve(s,n.value),i(n,(function(){ve(s,n.value)}),{deep:!0})}}var Ge={inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:[Object,s],default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new h(this.left,this.right,this.top,this.bottom,this.near,this.far),Me(this,"position",this.camera.position),["left","right","top","bottom","near","far","zoom"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},Ie={inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:[Object,s],default:{x:0,y:0,z:0}},lookAt:{type:[Object,s],default:null}},created:function(){var e=this;this.camera=new u(this.fov,this.aspect,this.near,this.far),Me(this,"position",this.camera.position),this.lookAt&&this.camera.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),i((function(){return e.lookAt}),(function(t){e.camera.lookAt(t.x,t.y,t.z)}),{deep:!0}),["aspect","far","fov","near"].forEach((function(t){i((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},ze={inject:{three:"three",scene:"scene",group:{default:null}},props:{position:Object,rotation:Object,scale:Object},provide:function(){return{group:this.group}},created:function(){this.parent=this.group?this.group:this.scene,this.group=new d,Me(this,"position",this.group.position),Me(this,"rotation",this.group.rotation),Me(this,"scale",this.group.scale),this.parent.add(this.group)},unmounted:function(){this.parent.remove(this.group)},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Group"},Pe={inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new m;return e.background&&(t.background=new c(e.background)),i((function(){return e.background}),(function(e){t.background=new c(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{},render:function(){return this.$slots.default?this.$slots.default():[]}},Re={emits:["ready"],inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])}))},beforeMount:function(){this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry)},mounted:function(){this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},addWatchers:function(){var e=this;this.watchProps.forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},Be={extends:Re,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,i=this.depth;this.size&&(e=this.size,t=this.size,i=this.size),this.geometry=new l(e,t,i,this.widthSegments,this.heightSegments,this.depthSegments)}}},ke={extends:Re,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new f(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},Ee={extends:Re,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},Le={extends:Re,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},je={extends:Re,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}}},Te={extends:Re,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}}},Oe={extends:Re,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new v(this.points,this.segments,this.phiStart,this.phiLength)}}},Ae={extends:Re,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}}},Fe={extends:Re,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}}},Ue={extends:Re,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},De={extends:Re,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.widthSegments,this.heightSegments)}}},$e={extends:Re,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.detail)}}},He={extends:Re,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},We={extends:Re,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},Ve={extends:Re,props:{path:G,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new I(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},Xe={inject:{scene:"scene",group:{default:null}},props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:Object,position:Object},created:function(){this.parent=this.group?this.group:this.scene},mounted:function(){var e=this;Me(this,"position",this.light.position),this.light.target&&Me(this,"target",this.light.target.position),this.light.shadow&&(this.light.castShadow=this.castShadow,ve(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.light.color=new c(e.color):e.light[t]=e[t]}))})),this.parent.add(this.light),this.light.target&&this.parent.add(this.light.target)},unmounted:function(){this.parent.remove(this.light),this.light.target&&this.parent.remove(this.light.target)},render:function(){return[]},__hmrId:"Light"},qe={extends:Xe,created:function(){this.light=new z(this.color,this.intensity)},__hmrId:"AmbientLight"},Ze={extends:Xe,props:{target:Object},created:function(){this.light=new P(this.color,this.intensity)},__hmrId:"DirectionalLight"},Ke={extends:Xe,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new R(this.color,this.intensity,this.distance,this.decay)},__hmrId:"PointLight"},Ye={extends:Xe,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new B(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){i((function(){return e[t]}),(function(){e.light[t]=e[t]}))}))},__hmrId:"SpotLight"},Je={inject:["three","mesh"],props:{id:String,color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:k},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},methods:{setProp:function(e,t,i){void 0===i&&(i=!1),this.material[e]=t,this.material.needsUpdate=i},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){i((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},Qe={extends:Je,methods:{createMaterial:function(){this.material=new E(Se(this.$props,["id"]))}},__hmrId:"BasicMaterial"},et={extends:Je,methods:{createMaterial:function(){this.material=new L(Se(this.$props,["id"]))}},__hmrId:"LambertMaterial"},tt={extends:Je,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?Ce(this.name):this.src,t=Se(this.$props,["id","src","name"]);t.matcap=(new j).load(e),this.material=new T(t)}},__hmrId:"MatcapMaterial"},it={extends:Je,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new O(Se(this.$props,["id"]))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){i((function(){return e[t]}),(function(i){"emissive"===t||"specular"===t?e.material[t].set(i):e.material[t]=i}))}))}},__hmrId:"PhongMaterial"},rt={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:function(){return new r(1,1)}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},st={extends:Je,props:rt,methods:{createMaterial:function(){this.material=new A(Se(this.$props,["id","normalScale"]))},addWatchers:function(){var e=this;Object.keys(rt).forEach((function(t){"normalScale"!==t&&i((function(){return e[t]}),(function(i){"emissive"===t?e.material[t].set(i):e.material[t]=i}))})),Me(this,"normalScale",this.material.normalScale)}},__hmrId:"StandardMaterial"},nt={extends:st,methods:{createMaterial:function(){this.material=new F(Se(this.$props,["id"]))}},__hmrId:"PhysicalMaterial"};var at,ot,ht,ut=U.meshphong_frag.slice(0,U.meshphong_frag.indexOf("void main() {")),dt=U.meshphong_frag.slice(U.meshphong_frag.indexOf("void main() {")),mt={uniforms:D.merge([$.phong.uniforms,{thicknessColor:{value:new c(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+U.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+ut+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+dt.replace("#include ",(at=U.lights_fragment_begin,ot="RE_Direct( directLight, geometry, material, reflectedLight );",ht="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",at.split(ot).join(ht)))},ct={extends:{inject:["three","mesh"],props:{id:String,uniforms:Object,vertexShader:String,fragmentShader:String},beforeMount:function(){this.createMaterial(),this.id&&(this.three.materials[this.id]=this.material),this.mesh.setMaterial(this.material)},mounted:function(){this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose(),this.id&&delete this.three.materials[this.id]},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{color:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=mt,t=D.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var i=e[0],r=e[1],s=i,n=r;["color","thicknessColor"].includes(i)&&("color"===i&&(s="diffuse"),n=new c(r)),["id","transparent","vertexColors"].includes(i)||(t[s].value=n)})),this.material=new H(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},lt={extends:Je,methods:{createMaterial:function(){this.material=new W(Se(this.$props,["id"]))}},__hmrId:"ToonMaterial"},ft={inject:["material"],emits:["loaded"],props:{src:String,onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"map"}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new j).load(this.src,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},pt={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),i((function(){return e.path}),this.refreshTexture),i((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new V).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=X,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},gt={inject:{three:"three",scene:"scene",rendererComponent:"rendererComponent",group:{default:null}},emits:["ready"],props:{materialId:String,position:Object,rotation:Object,scale:Object,castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},created:function(){this.parent=this.group?this.group:this.scene},provide:function(){return{mesh:this}},mounted:function(){this.geometry&&!this.mesh&&this.initMesh()},unmounted:function(){this.mesh&&(this.three.removeIntersectObject(this.mesh),this.parent.remove(this.mesh)),this.geometry&&this.geometry.dispose(),this.material&&!this.materialId&&this.material.dispose()},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new q(this.geometry,this.material),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.bindProps(),this.parent.add(this.mesh),this.$emit("ready")},bindProps:function(){var e=this;Me(this,"position",this.mesh.position),Me(this,"rotation",this.mesh.rotation),Me(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),i((function(){return e.materialId}),(function(){e.mesh.material=e.three.materials[e.materialId]}))},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Mesh"},yt={extends:gt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new l(this.size,this.size,this.size):this.geometry=new l(this.width,this.height,this.depth)}},__hmrId:"Box"},bt={extends:gt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new f(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},vt={extends:gt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},St={extends:gt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new g(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Nt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new y(this.radius,this.detail)}},__hmrId:"Dodecahedron"},wt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}},__hmrId:"Icosahedron"},xt={extends:gt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new v(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},_t={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new S(this.radius,this.detail)}},__hmrId:"Octahedron"},Ct={extends:gt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new Z(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Mt={extends:gt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Gt={extends:gt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},It={extends:gt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},zt={extends:gt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.detail)}},__hmrId:"Tetrahedron"},Pt={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},Rt={extends:gt,props:Object.assign({},Pt),created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){i((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new K).load(this.fontSrc,(function(t){e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new Y(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},Bt={extends:gt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},kt={extends:gt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},tubularSegments:{type:Number,default:64},radialSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.tubularSegments,this.radialSegments,this.p,this.q)}},__hmrId:"TorusKnot"},Et={extends:gt,props:{path:G,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["path","tubularSegments","radius","radialSegments","closed"].forEach((function(t){i((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new I(this.path,this.tubularSegments,this.radius,this.radialSegments,this.closed)}},__hmrId:"Tube"},Lt={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initGem(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.meshBack&&this.parent.remove(this.meshBack),this.materialBack&&this.materialBack.dispose()},methods:{initGem:function(){var e=new J(this.cubeRTSize,{format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),Me(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.side=k,this.material.envMap=e.texture,this.material.envMapIntensity=10,this.material.metalness=0,this.material.roughness=0,this.material.opacity=.75,this.material.transparent=!0,this.material.premultipliedAlpha=!0,this.material.needsUpdate=!0,this.materialBack=this.material.clone(),this.materialBack.side=ie,this.materialBack.envMapIntensity=5,this.materialBack.metalness=1,this.materialBack.roughness=0,this.materialBack.opacity=.5,this.meshBack=new q(this.geometry,this.materialBack),Me(this,"position",this.meshBack.position),Me(this,"rotation",this.meshBack.rotation),Me(this,"scale",this.meshBack.scale),this.parent.add(this.meshBack)},updateCubeRT:function(){this.mesh.visible=!1,this.meshBack.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0,this.meshBack.visible=!0}},__hmrId:"Gem"},jt={emits:["loaded"],extends:gt,props:{src:String,width:Number,height:Number,keepSize:Boolean},created:function(){var e=this;this.createGeometry(),this.createMaterial(),this.initMesh(),i((function(){return e.src}),this.refreshTexture),["width","height"].forEach((function(t){i((function(){return e[t]}),e.resize)})),this.keepSize&&this.three.onAfterResize(this.resize)},methods:{createGeometry:function(){this.geometry=new Z(1,1,1,1)},createMaterial:function(){this.material=new E({side:re,map:this.loadTexture()})},loadTexture:function(){return(new j).load(this.src,this.onLoaded)},refreshTexture:function(){this.texture&&this.texture.dispose(),this.material.map=this.loadTexture(),this.material.needsUpdate=!0},onLoaded:function(e){this.texture=e,this.resize(),this.$emit("loaded")},resize:function(){if(this.texture){var e,t,i=this.three.size,r=this.texture.image.width/this.texture.image.height;this.width&&this.height?(e=this.width*i.wWidth/i.width,t=this.height*i.wHeight/i.height):this.width?t=(e=this.width*i.wWidth/i.width)/r:this.height&&(e=(t=this.height*i.wHeight/i.height)*r),this.mesh.scale.x=e,this.mesh.scale.y=t}}},__hmrId:"Image"},Tt={inject:{three:"three",scene:"scene",group:{default:null}},props:{materialId:String,count:Number,position:Object,castShadow:Boolean,receiveShadow:Boolean},provide:function(){return{mesh:this}},created:function(){this.parent=this.group?this.group:this.scene},beforeMount:function(){this.$slots.default||console.error("Missing Geometry")},mounted:function(){this.initMesh()},unmounted:function(){this.parent.remove(this.mesh)},methods:{initMesh:function(){var e=this;!this.material&&this.materialId&&(this.material=this.three.materials[this.materialId]),this.mesh=new se(this.geometry,this.material,this.count),Me(this,"position",this.mesh.position),Me(this,"rotation",this.mesh.rotation),Me(this,"scale",this.mesh.scale),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],i((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.parent.add(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)}},render:function(){return this.$slots.default()},__hmrId:"InstancedMesh"},Ot={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"MirrorMesh"},At={extends:gt,props:{cubeRTSize:{type:Number,default:256},cubeCameraNear:{type:Number,default:.1},cubeCameraFar:{type:Number,default:2e3},refractionRatio:{type:Number,default:.98},autoUpdate:Boolean},mounted:function(){this.initMirrorMesh(),this.autoUpdate?this.three.onBeforeRender(this.updateCubeRT):this.rendererComponent.onMounted(this.updateCubeRT)},unmounted:function(){this.three.offBeforeRender(this.updateCubeRT),this.cubeCamera&&this.parent.remove(this.cubeCamera)},methods:{initMirrorMesh:function(){var e=new J(this.cubeRTSize,{mapping:X,format:Q,generateMipmaps:!0,minFilter:ee});this.cubeCamera=new te(this.cubeCameraNear,this.cubeCameraFar,e),Me(this,"position",this.cubeCamera.position),this.parent.add(this.cubeCamera),this.material.envMap=e.texture,this.material.refractionRatio=this.refractionRatio,this.material.needsUpdate=!0},updateCubeRT:function(){this.mesh.visible=!1,this.cubeCamera.update(this.three.renderer,this.scene),this.mesh.visible=!0}},__hmrId:"RefractionMesh"},Ft={emits:["ready","loaded"],inject:{three:"three",scene:"scene",group:{default:null}},props:{src:String,position:Object,scale:Object},created:function(){this.parent=this.group?this.group:this.scene},mounted:function(){this.texture=(new j).load(this.src,this.onLoaded),this.material=new ne({map:this.texture}),this.sprite=new ae(this.material),this.geometry=this.sprite.geometry,Me(this,"position",this.sprite.position),Me(this,"scale",this.sprite.scale),this.parent.add(this.sprite),this.$emit("ready")},unmounted:function(){this.texture.dispose(),this.material.dispose(),this.parent.remove(this.sprite)},methods:{onLoaded:function(){this.updateUV(),this.$emit("loaded")},updateUV:function(){this.iWidth=this.texture.image.width,this.iHeight=this.texture.image.height,this.iRatio=this.iWidth/this.iHeight;var e=.5,t=.5;this.iRatio>1?t=.5/this.iRatio:e=.5/this.iRatio;var i=this.geometry.attributes.position.array;i[0]=-e,i[1]=-t,i[5]=e,i[6]=-t,i[10]=e,i[11]=t,i[15]=-e,i[16]=t,this.geometry.attributes.position.needsUpdate=!0}},render:function(){return[]},__hmrId:"Sprite"},Ut={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new he(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},Dt={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},$t={extends:Dt,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new ue(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},Ht={extends:Dt,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new de(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},Wt={extends:Dt,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new me(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},Vt={extends:Dt,mounted:function(){var e=new ce(le);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},Xt={extends:Dt,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new fe(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(r){t.uniforms[r].value=e[r],i((function(){return e[r]}),(function(){t.uniforms[r].value=e[r]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},qt={extends:Dt,mounted:function(){var e=new pe(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},Zt="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",Kt={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new r},end:{value:new r},delta:{value:new r},texSize:{value:new r}},vertexShader:Zt,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "};function Yt(e,t,r,s){void 0===s&&(s="value"),e[t]&&(r[s]=e[t],i((function(){return e[t]}),(function(e){r[s]=e})))}var Jt={extends:Dt,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new ce(Kt),this.passes.push(this.pass),this.pass1=new ce(Kt),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,r=this.uniforms1=this.pass1.uniforms;r.blurRadius=t.blurRadius,r.gradientRadius=t.gradientRadius,r.start=t.start,r.end=t.end,r.texSize=t.texSize,Yt(this,"blurRadius",t.blurRadius),Yt(this,"gradientRadius",t.gradientRadius),this.updateFocusLine(),["start","end"].forEach((function(t){i((function(){return e[t]}),e.updateFocusLine,{deep:!0})})),this.pass.setSize=function(e,i){t.texSize.value.set(e,i)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new r).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},Qt={extends:Dt,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new r(this.three.size.width,this.three.size.height),t=new ge(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},ei={uniforms:{tDiffuse:{value:null},center:{value:new r(.5,.5)},strength:{value:0}},vertexShader:Zt,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},ti={extends:Dt,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new ce(ei),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;Me(this,"center",e.center.value),Yt(this,"strength",e.strength)},__hmrId:"ZoomBlurPass"},ii=Object.freeze({__proto__:null,Renderer:be,OrthographicCamera:Ge,PerspectiveCamera:Ie,Camera:Ie,Group:ze,Scene:Pe,BoxGeometry:Be,CircleGeometry:ke,ConeGeometry:Ee,CylinderGeometry:Le,DodecahedronGeometry:je,IcosahedronGeometry:Te,LatheGeometry:Oe,OctahedronGeometry:Ae,PolyhedronGeometry:Fe,RingGeometry:Ue,SphereGeometry:De,TetrahedronGeometry:$e,TorusGeometry:He,TorusKnotGeometry:We,TubeGeometry:Ve,AmbientLight:qe,DirectionalLight:Ze,PointLight:Ke,SpotLight:Ye,BasicMaterial:Qe,LambertMaterial:et,MatcapMaterial:tt,PhongMaterial:it,PhysicalMaterial:nt,StandardMaterial:st,SubSurfaceMaterial:ct,ToonMaterial:lt,Texture:ft,CubeTexture:pt,Mesh:gt,Box:yt,Circle:bt,Cone:vt,Cylinder:St,Dodecahedron:Nt,Icosahedron:wt,Lathe:xt,Octahedron:_t,Plane:Ct,Polyhedron:Mt,Ring:Gt,Sphere:It,Tetrahedron:zt,Text:Rt,Torus:Bt,TorusKnot:kt,Tube:Et,Gem:Lt,Image:jt,InstancedMesh:Tt,MirrorMesh:Ot,RefractionMesh:At,Sprite:Ft,EffectComposer:Ut,RenderPass:$t,BokehPass:Ht,FilmPass:Wt,FXAAPass:Vt,HalftonePass:Xt,SMAAPass:qt,TiltShiftPass:Jt,UnrealBloomPass:Qt,ZoomBlurPass:ti,setFromProp:ve,propsValues:Se,lerp:Ne,lerpv2:we,lerpv3:xe,limit:_e,getMatcapUrl:Ce}),ri={install:function(e){["Camera","OrthographicCamera","PerspectiveCamera","Renderer","Scene","Group","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","PointLight","SpotLight","BasicMaterial","LambertMaterial","MatcapMaterial","PhongMaterial","PhysicalMaterial","ShaderMaterial","StandardMaterial","SubSurfaceMaterial","ToonMaterial","Texture","CubeTexture","Box","Circle","Cone","Cylinder","Dodecahedron","Icosahedron","Mesh","Lathe","Octahedron","Plane","Polyhedron","Ring","Sphere","Tetrahedron","Text","Torus","TorusKnot","Tube","Gem","Image","InstancedMesh","MirrorMesh","RefractionMesh","Sprite","BokehPass","EffectComposer","FilmPass","FXAAPass","HalftonePass","RenderPass","SAOPass","SMAAPass","TiltShiftPass","UnrealBloomPass","ZoomBlurPass","GLTFViewer"].forEach((function(t){e.component(t,ii[t])}))}};export{qe as AmbientLight,Qe as BasicMaterial,Ht as BokehPass,yt as Box,Be as BoxGeometry,Ie as Camera,bt as Circle,ke as CircleGeometry,vt as Cone,Ee as ConeGeometry,pt as CubeTexture,St as Cylinder,Le as CylinderGeometry,Ze as DirectionalLight,Nt as Dodecahedron,je as DodecahedronGeometry,Ut as EffectComposer,Vt as FXAAPass,Wt as FilmPass,Lt as Gem,ze as Group,Xt as HalftonePass,wt as Icosahedron,Te as IcosahedronGeometry,jt as Image,Tt as InstancedMesh,et as LambertMaterial,xt as Lathe,Oe as LatheGeometry,tt as MatcapMaterial,gt as Mesh,Ot as MirrorMesh,_t as Octahedron,Ae as OctahedronGeometry,Ge as OrthographicCamera,Ie as PerspectiveCamera,it as PhongMaterial,nt as PhysicalMaterial,Ct as Plane,Ke as PointLight,Mt as Polyhedron,Fe as PolyhedronGeometry,At as RefractionMesh,$t as RenderPass,be as Renderer,Gt as Ring,Ue as RingGeometry,qt as SMAAPass,Pe as Scene,It as Sphere,De as SphereGeometry,Ye as SpotLight,Ft as Sprite,st as StandardMaterial,ct as SubSurfaceMaterial,zt as Tetrahedron,$e as TetrahedronGeometry,Rt as Text,ft as Texture,Jt as TiltShiftPass,lt as ToonMaterial,Bt as Torus,He as TorusGeometry,kt as TorusKnot,We as TorusKnotGeometry,ri as TroisJSVuePlugin,Et as Tube,Ve as TubeGeometry,Qt as UnrealBloomPass,ti as ZoomBlurPass,Ce as getMatcapUrl,Ne as lerp,we as lerpv2,xe as lerpv3,_e as limit,Se as propsValues,ve as setFromProp}; +import{h as e,toRef as t,watch as r,createApp as i}from"vue";import{Vector2 as s,Vector3 as n,Plane as a,Raycaster as o,WebGLRenderer as h,OrthographicCamera as u,PerspectiveCamera as d,Group as m,Scene as c,Color as l,BoxGeometry as f,CircleGeometry as p,ConeGeometry as g,CylinderGeometry as y,DodecahedronGeometry as b,IcosahedronGeometry as v,LatheGeometry as S,OctahedronGeometry as x,PolyhedronGeometry as N,RingGeometry as w,SphereGeometry as _,TetrahedronGeometry as C,TorusGeometry as M,TorusKnotGeometry as G,Curve as z,TubeGeometry as I,AmbientLight as R,DirectionalLight as L,HemisphereLight as P,PointLight as k,RectAreaLight as B,SpotLight as j,FrontSide as E,MeshBasicMaterial as T,MeshLambertMaterial as A,TextureLoader as O,MeshMatcapMaterial as F,MeshPhongMaterial as U,MeshStandardMaterial as D,MeshPhysicalMaterial as $,ShaderChunk as H,UniformsUtils as W,ShaderLib as V,ShaderMaterial as X,MeshToonMaterial as q,UVMapping as Z,ClampToEdgeWrapping as K,LinearFilter as Y,LinearMipmapLinearFilter as J,CubeTextureLoader as Q,CubeRefractionMapping as ee,Mesh as te,BoxBufferGeometry as re,CircleBufferGeometry as ie,ConeBufferGeometry as se,CylinderBufferGeometry as ne,DodecahedronBufferGeometry as ae,IcosahedronBufferGeometry as oe,LatheBufferGeometry as he,OctahedronBufferGeometry as ue,PlaneBufferGeometry as de,PolyhedronBufferGeometry as me,RingBufferGeometry as ce,SphereBufferGeometry as le,TetrahedronBufferGeometry as fe,FontLoader as pe,TextBufferGeometry as ge,TorusBufferGeometry as ye,TorusKnotBufferGeometry as be,CatmullRomCurve3 as ve,WebGLCubeRenderTarget as Se,RGBFormat as xe,CubeCamera as Ne,BackSide as we,DoubleSide as _e,InstancedMesh as Ce,SpriteMaterial as Me,Sprite as Ge}from"three";import{OrbitControls as ze}from"three/examples/jsm/controls/OrbitControls.js";import{RectAreaLightUniformsLib as Ie}from"three/examples/jsm/lights/RectAreaLightUniformsLib.js";import{RectAreaLightHelper as Re}from"three/examples/jsm/helpers/RectAreaLightHelper.js";import{EffectComposer as Le}from"three/examples/jsm/postprocessing/EffectComposer.js";import{RenderPass as Pe}from"three/examples/jsm/postprocessing/RenderPass.js";import{BokehPass as ke}from"three/examples/jsm/postprocessing/BokehPass.js";import{FilmPass as Be}from"three/examples/jsm/postprocessing/FilmPass.js";import{ShaderPass as je}from"three/examples/jsm/postprocessing/ShaderPass.js";import{FXAAShader as Ee}from"three/examples/jsm/shaders/FXAAShader.js";import{HalftonePass as Te}from"three/examples/jsm/postprocessing/HalftonePass.js";import{SMAAPass as Ae}from"three/examples/jsm/postprocessing/SMAAPass.js";import{UnrealBloomPass as Oe}from"three/examples/jsm/postprocessing/UnrealBloomPass.js";function Fe(){var e={canvas:null,antialias:!0,alpha:!1,autoClear:!0,orbit_ctrl:!1,mouse_move:!1,mouse_raycast:!1,mouse_over:!1,click:!1,resize:!0,width:0,height:0},t={width:1,height:1,wWidth:1,wHeight:1,ratio:1},r=[],i=[],u=[],d=new s,m=new n,c=new a(new n(0,0,1),0),l=new o,f=[],p={conf:e,renderer:null,camera:null,cameraCtrl:null,materials:{},scene:null,size:t,mouse:d,mouseV3:m,init:function(t){t&&Object.entries(t).forEach((function(t){var r=t[0],i=t[1];e[r]=i}));if(!p.scene)return void console.error("Missing Scene");if(!p.camera)return void console.error("Missing Camera");p.renderer=new h({canvas:e.canvas,antialias:e.antialias,alpha:e.alpha}),p.renderer.autoClear=e.autoClear,e.orbit_ctrl&&(p.orbitCtrl=new ze(p.camera,p.renderer.domElement),e.orbit_ctrl instanceof Object&&Object.entries(e.orbit_ctrl).forEach((function(e){var t=e[0],r=e[1];p.orbitCtrl[t]=r})));e.resize?(x(),window.addEventListener("resize",x)):N(300|e.width,150|e.height);e.mouse_move=e.mouse_move||e.mouse_over,e.mouse_move&&("body"===e.mouse_move?p.mouse_move_element=document.body:p.mouse_move_element=p.renderer.domElement,p.mouse_move_element.addEventListener("mousemove",b),p.mouse_move_element.addEventListener("mouseleave",v));e.click&&p.renderer.domElement.addEventListener("click",y);return r.forEach((function(e){return e()})),!0},dispose:function(){u=[],window.removeEventListener("resize",x),p.mouse_move_element&&(p.mouse_move_element.removeEventListener("mousemove",b),p.mouse_move_element.removeEventListener("mouseleave",v));p.renderer.domElement.removeEventListener("click",y),p.orbitCtrl&&p.orbitCtrl.dispose();this.renderer.dispose()},render:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.renderer.render(p.scene,p.camera)},renderC:function(){p.orbitCtrl&&p.orbitCtrl.update();u.forEach((function(e){return e()})),p.composer.render()},setSize:N,onAfterInit:function(e){r.push(e)},onAfterResize:function(e){i.push(e)},offAfterResize:function(e){i=i.filter((function(t){return t!==e}))},onBeforeRender:function(e){u.push(e)},offBeforeRender:function(e){u=u.filter((function(t){return t!==e}))},addIntersectObject:function(e){-1===f.indexOf(e)&&f.push(e)},removeIntersectObject:function(e){var t=f.indexOf(e);-1!==t&&f.splice(t,1)}};function g(e){var r=e.target.getBoundingClientRect();d.x=(e.clientX-r.left)/t.width*2-1,d.y=-(e.clientY-r.top)/t.height*2+1}function y(e){g(e),l.setFromCamera(d,p.camera);for(var t=l.intersectObjects(f),r=0;r1?1:r)}function Ve(e,t,r){e.x=We(e.x,t.x,r),e.y=We(e.y,t.y,r)}function Xe(e,t,r){e.x=We(e.x,t.x,r),e.y=We(e.y,t.y,r),e.z=We(e.z,t.z,r)}function qe(e,t,r){return er?r:e}function Ze(e,t){return void 0===t&&(t=1024),"https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/"+t+"/"+(""+e+function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)+".png")}var Ke={name:"OrthographicCamera",inject:["three"],props:{left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:1},position:{type:Object,default:{x:0,y:0,z:0}}},created:function(){var e=this;this.camera=new u(this.left,this.right,this.top,this.bottom,this.near,this.far),$e(this,"position",this.camera),["left","right","top","bottom","near","far","zoom"].forEach((function(t){r((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"OrthographicCamera"},Ye={name:"PerspectiveCamera",inject:["three"],props:{aspect:{type:Number,default:1},far:{type:Number,default:2e3},fov:{type:Number,default:50},near:{type:Number,default:.1},position:{type:Object,default:{x:0,y:0,z:0}},lookAt:{type:Object,default:null}},created:function(){var e=this;this.camera=new d(this.fov,this.aspect,this.near,this.far),$e(this,"position",this.camera),this.lookAt&&this.camera.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),r((function(){return e.lookAt}),(function(t){e.camera.lookAt(t.x,t.y,t.z)}),{deep:!0}),["aspect","far","fov","near"].forEach((function(t){r((function(){return e[t]}),(function(){e.camera[t]=e[t],e.camera.updateProjectionMatrix()}))})),this.three.camera=this.camera},render:function(){return[]},__hmrId:"PerspectiveCamera"},Je={name:"Object3D",inject:["three","scene","rendererComponent"],props:{position:{type:Object,default:{x:0,y:0,z:0}},rotation:{type:Object,default:{x:0,y:0,z:0}},scale:{type:Object,default:{x:1,y:1,z:1}},lookAt:{type:Object,default:null}},unmounted:function(){this.$parent.remove&&this.$parent.remove(this.o3d)},methods:{initObject3D:function(e){var t=this;this.o3d=e,$e(this,"position",this.o3d),$e(this,"rotation",this.o3d),$e(this,"scale",this.o3d),this.lookAt&&this.o3d.lookAt(this.lookAt.x,this.lookAt.y,this.lookAt.z),r((function(){return t.lookAt}),(function(e){t.o3d.lookAt(e.x,e.y,e.z)}),{deep:!0}),this.$parent.add&&this.$parent.add(this.o3d)},add:function(e){this.o3d.add(e)},remove:function(e){this.o3d.remove(e)}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Object3D"},Qe={name:"Group",extends:Je,created:function(){this.group=new m,this.initObject3D(this.group)},__hmrId:"Group"},et={name:"Scene",inject:["three"],props:{id:String,background:[String,Number]},setup:function(e){var t=new c;return e.background&&(t.background=new l(e.background)),r((function(){return e.background}),(function(e){t.background=new l(e)})),{scene:t}},provide:function(){return{scene:this.scene}},mounted:function(){this.three.scene||(this.three.scene=this.scene)},methods:{add:function(e){this.scene.add(e)},remove:function(e){this.scene.remove(e)}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Scene"},tt={inject:["mesh"],props:{rotateX:Number,rotateY:Number,rotateZ:Number},created:function(){var e=this;this.mesh||console.error("Missing parent Mesh"),this.watchProps=[],Object.entries(this.$props).forEach((function(t){return e.watchProps.push(t[0])})),this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),this.addWatchers()},unmounted:function(){this.geometry.dispose()},methods:{addWatchers:function(){var e=this;this.watchProps.forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},rotateGeometry:function(){this.rotateX&&this.geometry.rotateX(this.rotateX),this.rotateY&&this.geometry.rotateY(this.rotateY),this.rotateZ&&this.geometry.rotateZ(this.rotateZ)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.rotateGeometry(),this.mesh.setGeometry(this.geometry),e.dispose()}},render:function(){return[]}},rt={extends:tt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},methods:{createGeometry:function(){var e=this.width,t=this.height,r=this.depth;this.size&&(e=this.size,t=this.size,r=this.size),this.geometry=new f(e,t,r,this.widthSegments,this.heightSegments,this.depthSegments)}}},it={extends:tt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new p(this.radius,this.segments,this.thetaStart,this.thetaLength)}}},st={extends:tt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new g(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},nt={extends:tt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new y(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}}},at={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new b(this.radius,this.detail)}}},ot={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new v(this.radius,this.detail)}}},ht={extends:tt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new S(this.points,this.segments,this.phiStart,this.phiLength)}}},ut={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new x(this.radius,this.detail)}}},dt={extends:tt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new N(this.vertices,this.indices,this.radius,this.detail)}}},mt={extends:tt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new w(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}}},ct={extends:tt,props:{radius:{type:Number,default:1},widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},methods:{createGeometry:function(){this.geometry=new _(this.radius,this.widthSegments,this.heightSegments)}}},lt={extends:tt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},methods:{createGeometry:function(){this.geometry=new C(this.radius,this.detail)}}},ft={extends:tt,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},methods:{createGeometry:function(){this.geometry=new M(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}}},pt={extends:tt,props:{radius:{type:Number,default:1},tube:{type:Number,default:.4},radialSegments:{type:Number,default:64},tubularSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},methods:{createGeometry:function(){this.geometry=new G(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.p,this.q)}}},gt={extends:tt,props:{path:z,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radiusSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},methods:{createGeometry:function(){this.geometry=new I(this.path,this.tubularSegments,this.radius,this.radiusSegments,this.closed)}}},yt={extends:Je,name:"Light",props:{color:{type:String,default:"#ffffff"},intensity:{type:Number,default:1},castShadow:{type:Boolean,default:!1},shadowMapSize:{type:Object,default:{x:512,y:512}}},unmounted:function(){this.light.target&&this.$parent.remove(this.light.target)},methods:{initLight:function(){var e=this;this.light.target&&$e(this,"target",this.light.target,"position"),this.light.shadow&&(this.light.castShadow=this.castShadow,De(this.light.shadow.mapSize,this.shadowMapSize)),["color","intensity","castShadow"].forEach((function(t){r((function(){return e[t]}),(function(){"color"===t?e.light.color=new l(e.color):e.light[t]=e[t]}))})),this.initObject3D(this.light),this.light.target&&this.$parent.add(this.light.target)}},__hmrId:"Light"},bt={extends:yt,created:function(){this.light=new R(this.color,this.intensity),this.initLight()},__hmrId:"AmbientLight"},vt={extends:yt,props:{target:Object},created:function(){this.light=new L(this.color,this.intensity),this.initLight()},__hmrId:"DirectionalLight"},St={extends:yt,props:{groundColor:{type:String,default:"#ffffff"}},created:function(){this.light=new P(this.color,this.groundColor,this.intensity),$e(this,"groundColor",this.light),this.initLight()},__hmrId:"HemisphereLight"},xt={extends:yt,props:{distance:{type:Number,default:0},decay:{type:Number,default:1}},created:function(){this.light=new k(this.color,this.intensity,this.distance,this.decay),this.initLight()},__hmrId:"PointLight"},Nt={extends:yt,props:{width:{type:Number,default:10},height:{type:Number,default:10},helper:Boolean},created:function(){var e=this;Ie.init(),this.light=new B(this.color,this.intensity,this.width,this.height),["width","height"].forEach((function(t){r((function(){return e[t]}),(function(){e.light[t]=e[t]}))})),this.helper&&(this.lightHelper=new Re(this.light),this.$parent.add(this.lightHelper)),this.initLight()},unmounted:function(){this.lightHelper&&this.$parent.remove(this.lightHelper)},__hmrId:"RectAreaLight"},wt={extends:yt,props:{angle:{type:Number,default:Math.PI/3},decay:{type:Number,default:1},distance:{type:Number,default:0},penumbra:{type:Number,default:0},target:Object},created:function(){var e=this;this.light=new j(this.color,this.intensity,this.distance,this.angle,this.penumbra,this.decay),["angle","decay","distance","penumbra"].forEach((function(t){r((function(){return e[t]}),(function(){e.light[t]=e[t]}))})),this.initLight()},__hmrId:"SpotLight"},_t={inject:["three","mesh"],props:{color:{type:[String,Number],default:"#ffffff"},depthTest:{type:Boolean,default:!0},depthWrite:{type:Boolean,default:!0},flatShading:Boolean,fog:{type:Boolean,default:!0},opacity:{type:Number,default:1},side:{type:Number,default:E},transparent:Boolean,vertexColors:Boolean},provide:function(){return{material:this}},created:function(){this.createMaterial(),this.mesh.setMaterial(this.material),this._addWatchers(),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose()},methods:{setProp:function(e,t,r){void 0===r&&(r=!1),this.material[e]=t,this.material.needsUpdate=r},setTexture:function(e,t){void 0===t&&(t="map"),this.setProp(t,e,!0)},_addWatchers:function(){var e=this;["color","depthTest","depthWrite","fog","opacity","side","transparent"].forEach((function(t){r((function(){return e[t]}),(function(){"color"===t?e.material.color.set(e.color):e.material[t]=e[t]}))}))}},render:function(){return this.$slots.default?this.$slots.default():[]},__hmrId:"Material"},Ct={extends:_t,methods:{createMaterial:function(){this.material=new T(He(this.$props))}},__hmrId:"BasicMaterial"},Mt={extends:_t,methods:{createMaterial:function(){this.material=new A(He(this.$props))}},__hmrId:"LambertMaterial"},Gt={extends:_t,props:{src:String,name:String},methods:{createMaterial:function(){var e=this.name?Ze(this.name):this.src,t=He(this.$props,["src","name"]);t.matcap=(new O).load(e),this.material=new F(t)}},__hmrId:"MatcapMaterial"},zt={extends:_t,props:{emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},reflectivity:{type:Number,default:1},shininess:{type:Number,default:30},specular:{type:[String,Number],default:1118481}},methods:{createMaterial:function(){this.material=new U(He(this.$props))},addWatchers:function(){var e=this;["emissive","emissiveIntensity","reflectivity","shininess","specular"].forEach((function(t){r((function(){return e[t]}),(function(r){"emissive"===t||"specular"===t?e.material[t].set(r):e.material[t]=r}))}))}},__hmrId:"PhongMaterial"},It={aoMapIntensity:{type:Number,default:1},bumpScale:{type:Number,default:1},displacementBias:{type:Number,default:0},displacementScale:{type:Number,default:1},emissive:{type:[Number,String],default:0},emissiveIntensity:{type:Number,default:1},envMapIntensity:{type:Number,default:1},lightMapIntensity:{type:Number,default:1},metalness:{type:Number,default:0},normalScale:{type:Object,default:{x:1,y:1}},roughness:{type:Number,default:1},refractionRatio:{type:Number,default:.98},wireframe:Boolean},Rt={extends:_t,props:It,methods:{createMaterial:function(){this.material=new D(He(this.$props,["normalScale"]))},addWatchers:function(){var e=this;Object.keys(It).forEach((function(t){"normalScale"!==t&&r((function(){return e[t]}),(function(r){"emissive"===t?e.material[t].set(r):e.material[t]=r}))})),$e(this,"normalScale",this.material)}},__hmrId:"StandardMaterial"},Lt={extends:Rt,methods:{createMaterial:function(){this.material=new $(He(this.$props))}},__hmrId:"PhysicalMaterial"};var Pt,kt,Bt,jt=H.meshphong_frag.slice(0,H.meshphong_frag.indexOf("void main() {")),Et=H.meshphong_frag.slice(H.meshphong_frag.indexOf("void main() {")),Tt={uniforms:W.merge([V.phong.uniforms,{thicknessColor:{value:new l(6718871)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),vertexShader:"\n #define USE_UV\n "+H.meshphong_vert+"\n ",fragmentShader:"\n #define USE_UV\n #define SUBSURFACE\n\n "+jt+"\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n "+Et.replace("#include ",(Pt=H.lights_fragment_begin,kt="RE_Direct( directLight, geometry, material, reflectedLight );",Bt="\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n ",Pt.split(kt).join(Bt)))},At={extends:{inject:["three","mesh"],props:{uniforms:Object,vertexShader:String,fragmentShader:String},created:function(){this.createMaterial(),this.mesh.setMaterial(this.material),this.addWatchers&&this.addWatchers()},unmounted:function(){this.material.dispose()},render:function(){return[]},__hmrId:"ShaderMaterial"},props:{color:{type:String,default:"#ffffff"},thicknessColor:{type:String,default:"#ffffff"},thicknessDistortion:{type:Number,default:.4},thicknessAmbient:{type:Number,default:.01},thicknessAttenuation:{type:Number,default:.7},thicknessPower:{type:Number,default:2},thicknessScale:{type:Number,default:4},transparent:{type:Boolean,default:!1},opacity:{type:Number,default:1},vertexColors:{type:Boolean,default:!1}},methods:{createMaterial:function(){var e=Tt,t=W.clone(e.uniforms);Object.entries(this.$props).forEach((function(e){var r=e[0],i=e[1],s=r,n=i;["color","thicknessColor"].includes(r)&&("color"===r&&(s="diffuse"),n=new l(i)),["transparent","vertexColors"].includes(r)||(t[s].value=n)})),this.material=new X(Object.assign({},e,{uniforms:t,lights:!0,transparent:this.transparent,vertexColors:this.vertexColors}))}},__hmrId:"SubSurfaceMaterial"},Ot={extends:_t,methods:{createMaterial:function(){this.material=new q(He(this.$props))}},__hmrId:"ToonMaterial"},Ft={inject:["material"],emits:["loaded"],props:{id:{type:String,default:"map"},src:String,onLoad:Function,onProgress:Function,onError:Function,mapping:{type:Number,default:Z},wrapS:{type:Number,default:K},wrapT:{type:Number,default:K},magFilter:{type:Number,default:Y},minFilter:{type:Number,default:J},repeat:{type:Object,default:{x:1,y:1}},rotation:{type:Number,default:0},center:{type:Object,default:{x:0,y:0}}},created:function(){var e=this;this.refreshTexture(),r((function(){return e.src}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){var e=this;this.texture=(new O).load(this.src,this.onLoaded,this.onProgress,this.onError);["mapping","wrapS","wrapT","magFilter","minFilter","repeat","rotation","rotation","center"].forEach((function(t){$e(e,t,e.texture)}))},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id)},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Ut={inject:["material"],emits:["loaded"],props:{path:String,urls:{type:Array,default:["px.jpg","nx.jpg","py.jpg","ny.jpg","pz.jpg","nz.jpg"]},onLoad:Function,onProgress:Function,onError:Function,id:{type:String,default:"envMap"},refraction:Boolean,refractionRatio:{type:Number,default:.98}},created:function(){var e=this;this.refreshTexture(),r((function(){return e.path}),this.refreshTexture),r((function(){return e.urls}),this.refreshTexture)},unmounted:function(){this.material.setTexture(null,this.id),this.texture.dispose()},methods:{createTexture:function(){this.texture=(new Q).setPath(this.path).load(this.urls,this.onLoaded,this.onProgress,this.onError)},refreshTexture:function(){this.createTexture(),this.material.setTexture(this.texture,this.id),this.refraction&&(this.texture.mapping=ee,this.material.setProp("refractionRatio",this.refractionRatio))},onLoaded:function(){this.onLoad&&this.onLoad(),this.$emit("loaded")}},render:function(){return[]}},Dt={extends:Je,name:"Mesh",props:{castShadow:Boolean,receiveShadow:Boolean,onHover:Function,onClick:Function},provide:function(){return{mesh:this}},mounted:function(){this.mesh||this.loading||this.initMesh()},methods:{initMesh:function(){var e=this;this.mesh=new te(this.geometry,this.material),["castShadow","receiveShadow"].forEach((function(t){e.mesh[t]=e[t],r((function(){return e[t]}),(function(){e.mesh[t]=e[t]}))})),this.onHover&&(this.mesh.onHover=function(t){e.onHover({component:e,over:t})},this.three.addIntersectObject(this.mesh)),this.onClick&&(this.mesh.onClick=function(t){e.onClick({component:e,event:t})},this.three.addIntersectObject(this.mesh)),this.initObject3D(this.mesh)},setGeometry:function(e){this.geometry=e,this.mesh&&(this.mesh.geometry=e)},setMaterial:function(e){this.material=e,this.mesh&&(this.mesh.material=e)},refreshGeometry:function(){var e=this.geometry;this.createGeometry(),this.mesh.geometry=this.geometry,e.dispose()}},unmounted:function(){this.mesh&&this.three.removeIntersectObject(this.mesh),this.geometry&&this.geometry.dispose(),this.material&&this.material.dispose()},__hmrId:"Mesh"},$t={extends:Dt,props:{size:Number,width:{type:Number,default:1},height:{type:Number,default:1},depth:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1},depthSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry(),["size","width","height","depth","widthSegments","heightSegments","depthSegments"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.size?this.geometry=new re(this.size,this.size,this.size):this.geometry=new re(this.width,this.height,this.depth)}},__hmrId:"Box"},Ht={extends:Dt,props:{radius:{type:Number,default:1},segments:{type:Number,default:8},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","segments","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ie(this.radius,this.segments,this.thetaStart,this.thetaLength)}},__hmrId:"Circle"},Wt={extends:Dt,props:{radius:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new se(this.radius,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cone"},Vt={extends:Dt,props:{radiusTop:{type:Number,default:1},radiusBottom:{type:Number,default:1},height:{type:Number,default:1},radialSegments:{type:Number,default:8},heightSegments:{type:Number,default:1},openEnded:{type:Boolean,default:!1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radiusTop","radiusBottom","height","radialSegments","heightSegments","openEnded","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ne(this.radiusTop,this.radiusBottom,this.height,this.radialSegments,this.heightSegments,this.openEnded,this.thetaStart,this.thetaLength)}},__hmrId:"Cylinder"},Xt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ae(this.radius,this.detail)}},__hmrId:"Dodecahedron"},qt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new oe(this.radius,this.detail)}},__hmrId:"Icosahedron"},Zt={extends:Dt,props:{points:Array,segments:{type:Number,default:12},phiStart:{type:Number,default:0},phiLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["points","segments","phiStart","phiLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new he(this.points,this.segments,this.phiStart,this.phiLength)}},__hmrId:"Lathe"},Kt={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ue(this.radius,this.detail)}},__hmrId:"Octahedron"},Yt={extends:Dt,props:{width:{type:Number,default:1},height:{type:Number,default:1},widthSegments:{type:Number,default:1},heightSegments:{type:Number,default:1}},created:function(){var e=this;this.createGeometry();["width","height","widthSegments","heightSegments"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new de(this.width,this.height,this.widthSegments,this.heightSegments)}},__hmrId:"Plane"},Jt={extends:Dt,props:{vertices:Array,indices:Array,radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["vertices","indices","radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new me(this.vertices,this.indices,this.radius,this.detail)}},__hmrId:"Polyhedron"},Qt={extends:Dt,props:{innerRadius:{type:Number,default:.5},outerRadius:{type:Number,default:1},thetaSegments:{type:Number,default:8},phiSegments:{type:Number,default:1},thetaStart:{type:Number,default:0},thetaLength:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ce(this.innerRadius,this.outerRadius,this.thetaSegments,this.phiSegments,this.thetaStart,this.thetaLength)}},__hmrId:"Ring"},er={extends:Dt,props:{radius:Number,widthSegments:{type:Number,default:12},heightSegments:{type:Number,default:12}},watch:{radius:function(){this.refreshGeometry()},widthSegments:function(){this.refreshGeometry()},heightSegments:function(){this.refreshGeometry()}},created:function(){this.createGeometry()},methods:{createGeometry:function(){this.geometry=new le(this.radius,this.widthSegments,this.heightSegments)}},__hmrId:"Sphere"},tr={extends:Dt,props:{radius:{type:Number,default:1},detail:{type:Number,default:0}},created:function(){var e=this;this.createGeometry();["radius","detail"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new fe(this.radius,this.detail)}},__hmrId:"Tetrahedron"},rr={text:String,fontSrc:String,size:{type:Number,default:80},height:{type:Number,default:5},depth:{type:Number,default:1},curveSegments:{type:Number,default:12},bevelEnabled:{type:Boolean,default:!1},bevelThickness:{type:Number,default:10},bevelSize:{type:Number,default:8},bevelOffset:{type:Number,default:0},bevelSegments:{type:Number,default:5},align:{type:[Boolean,String],default:!1}},ir={extends:Dt,props:Object.assign({},rr),data:function(){return{loading:!0}},created:function(){var e=this;["text","size","height","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align"].forEach((function(t){r((function(){return e[t]}),(function(){e.font&&e.refreshGeometry()}))})),(new pe).load(this.fontSrc,(function(t){e.loading=!1,e.font=t,e.createGeometry(),e.initMesh()}))},methods:{createGeometry:function(){this.geometry=new ge(this.text,{font:this.font,size:this.size,height:this.height,depth:this.depth,curveSegments:this.curveSegments,bevelEnabled:this.bevelEnabled,bevelThickness:this.bevelThickness,bevelSize:this.bevelSize,bevelOffset:this.bevelOffset,bevelSegments:this.bevelSegments}),"center"===this.align&&this.geometry.center()}}},sr={extends:Dt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},radialSegments:{type:Number,default:8},tubularSegments:{type:Number,default:6},arc:{type:Number,default:2*Math.PI}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","arc"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new ye(this.radius,this.tube,this.radialSegments,this.tubularSegments,this.arc)}},__hmrId:"Torus"},nr={extends:Dt,props:{radius:{type:Number,default:.5},tube:{type:Number,default:.4},tubularSegments:{type:Number,default:64},radialSegments:{type:Number,default:8},p:{type:Number,default:2},q:{type:Number,default:3}},created:function(){var e=this;this.createGeometry();["radius","tube","radialSegments","tubularSegments","p","q"].forEach((function(t){r((function(){return e[t]}),(function(){e.refreshGeometry()}))}))},methods:{createGeometry:function(){this.geometry=new be(this.radius,this.tube,this.tubularSegments,this.radialSegments,this.p,this.q)}},__hmrId:"TorusKnot"},ar={extends:Dt,props:{path:z,points:Array,tubularSegments:{type:Number,default:64},radius:{type:Number,default:1},radialSegments:{type:Number,default:8},closed:{type:Boolean,default:!1}},created:function(){var e=this;this.createGeometry();["tubularSegments","radius","radialSegments","closed"].forEach((function(t){r((function(){return e[t]}),(function(t){e.refreshGeometry()}))}))},methods:{createGeometry:function(){var e;this.points?e=new ve(this.points):this.path?e=this.path:console.error("Missing path curve or points."),this.geometry=new I(e,this.tubularSegments,this.radius,this.radialSegments,this.closed)},updateCurve:function(){!function(e,t){var r=new ve(t),i=e.parameters,s=i.radialSegments,a=i.radius,o=i.tubularSegments,h=i.closed,u=r.computeFrenetFrames(o,h);e.tangents=u.tangents,e.normals=u.normals,e.binormals=u.binormals,e.parameters.path=r;for(var d,m=e.attributes.position.array,c=e.attributes.normal.array,l=new n,f=0;f1?t=.5/this.iRatio:e=.5/this.iRatio;var r=this.geometry.attributes.position.array;r[0]=-e,r[1]=-t,r[5]=e,r[6]=-t,r[10]=e,r[11]=t,r[15]=-e,r[16]=t,this.geometry.attributes.position.needsUpdate=!0}},__hmrId:"Sprite"},lr={setup:function(){return{passes:[]}},inject:["three"],provide:function(){return{passes:this.passes}},mounted:function(){var e=this;this.three.onAfterInit((function(){e.composer=new Le(e.three.renderer),e.three.renderer.autoClear=!1,e.passes.forEach((function(t){e.composer.addPass(t)})),e.three.composer=e.composer,e.resize(),e.three.onAfterResize(e.resize)}))},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){this.composer.setSize(this.three.size.width,this.three.size.height)}},render:function(){return this.$slots.default()},__hmrId:"EffectComposer"},fr={inject:["three","passes"],beforeMount:function(){this.passes||console.error("Missing parent EffectComposer")},unmounted:function(){this.pass.dispose&&this.pass.dispose()},render:function(){return[]},__hmrId:"EffectPass"},pr={extends:fr,mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e=new Pe(this.three.scene,this.three.camera);this.passes.push(e),this.pass=e},__hmrId:"RenderPass"},gr={extends:fr,props:{focus:{type:Number,default:1},aperture:{type:Number,default:.025},maxblur:{type:Number,default:.01}},watch:{focus:function(){this.pass.uniforms.focus.value=this.focus},aperture:function(){this.pass.uniforms.aperture.value=this.aperture},maxblur:function(){this.pass.uniforms.maxblur.value=this.maxblur}},mounted:function(){this.three.scene||console.error("Missing Scene"),this.three.camera||console.error("Missing Camera");var e={focus:this.focus,aperture:this.aperture,maxblur:this.maxblur,width:this.three.size.width,height:this.three.size.height},t=new ke(this.three.scene,this.three.camera,e);this.passes.push(t),this.pass=t},__hmrId:"BokehPass"},yr={extends:fr,props:{noiseIntensity:{type:Number,default:.5},scanlinesIntensity:{type:Number,default:.05},scanlinesCount:{type:Number,default:4096},grayscale:{type:Number,default:0}},watch:{noiseIntensity:function(){this.pass.uniforms.nIntensity.value=this.noiseIntensity},scanlinesIntensity:function(){this.pass.uniforms.sIntensity.value=this.scanlinesIntensity},scanlinesCount:function(){this.pass.uniforms.sCount.value=this.scanlinesCount},grayscale:function(){this.pass.uniforms.grayscale.value=this.grayscale}},mounted:function(){var e=new Be(this.noiseIntensity,this.scanlinesIntensity,this.scanlinesCount,this.grayscale);this.passes.push(e),this.pass=e},__hmrId:"FilmPass"},br={extends:fr,mounted:function(){var e=new je(Ee);this.passes.push(e),this.pass=e,this.three.onAfterResize(this.resize)},unmounted:function(){this.three.offAfterResize(this.resize)},methods:{resize:function(){var e=this.pass.material.uniforms.resolution;e.value.x=1/this.three.size.width,e.value.y=1/this.three.size.height}},__hmrId:"FXAAPass"},vr={extends:fr,props:{shape:{type:Number,default:1},radius:{type:Number,default:4},rotateR:{type:Number,default:Math.PI/12*1},rotateG:{type:Number,default:Math.PI/12*2},rotateB:{type:Number,default:Math.PI/12*3},scatter:{type:Number,default:0}},mounted:function(){var e=this,t=new Te(this.three.size.width,this.three.size.height,{});["shape","radius","rotateR","rotateG","rotateB","scatter"].forEach((function(i){t.uniforms[i].value=e[i],r((function(){return e[i]}),(function(){t.uniforms[i].value=e[i]}))})),this.passes.push(t),this.pass=t},__hmrId:"HalftonePass"},Sr={extends:fr,mounted:function(){var e=new Ae(this.three.size.width,this.three.size.height);this.passes.push(e),this.pass=e},__hmrId:"SMAAPass"},xr="\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",Nr={uniforms:{tDiffuse:{value:null},blurRadius:{value:0},gradientRadius:{value:0},start:{value:new s},end:{value:new s},delta:{value:new s},texSize:{value:new s}},vertexShader:xr,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},wr={extends:fr,props:{blurRadius:{type:Number,default:10},gradientRadius:{type:Number,default:100},start:{type:Object,default:{x:0,y:100}},end:{type:Object,default:{x:10,y:100}}},mounted:function(){var e=this;this.pass=new je(Nr),this.passes.push(this.pass),this.pass1=new je(Nr),this.passes.push(this.pass1);var t=this.uniforms=this.pass.uniforms,i=this.uniforms1=this.pass1.uniforms;i.blurRadius=t.blurRadius,i.gradientRadius=t.gradientRadius,i.start=t.start,i.end=t.end,i.texSize=t.texSize,$e(this,"blurRadius",t.blurRadius,"value"),$e(this,"gradientRadius",t.gradientRadius,"value"),this.updateFocusLine(),["start","end"].forEach((function(t){r((function(){return e[t]}),e.updateFocusLine,{deep:!0})})),this.pass.setSize=function(e,r){t.texSize.value.set(e,r)}},methods:{updateFocusLine:function(){this.uniforms.start.value.copy(this.start),this.uniforms.end.value.copy(this.end);var e=(new s).copy(this.end).sub(this.start).normalize();this.uniforms.delta.value.copy(e),this.uniforms1.delta.value.set(-e.y,e.x)}},__hmrId:"TiltShiftPass"},_r={extends:fr,props:{strength:{type:Number,default:1.5},radius:{type:Number,default:0},threshold:{type:Number,default:0}},watch:{strength:function(){this.pass.strength=this.strength},radius:function(){this.pass.radius=this.radius},threshold:function(){this.pass.threshold=this.threshold}},mounted:function(){var e=new s(this.three.size.width,this.three.size.height),t=new Oe(e,this.strength,this.radius,this.threshold);this.passes.push(t),this.pass=t},__hmrId:"UnrealBloomPass"},Cr={uniforms:{tDiffuse:{value:null},center:{value:new s(.5,.5)},strength:{value:0}},vertexShader:xr,fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n "},Mr={extends:fr,props:{center:{type:Object,default:{x:.5,y:.5}},strength:{type:Number,default:.5}},mounted:function(){this.pass=new je(Cr),this.passes.push(this.pass);var e=this.uniforms=this.pass.uniforms;$e(this,"center",e.center,"value"),$e(this,"strength",e.strength,"value")},__hmrId:"ZoomBlurPass"},Gr=Object.freeze({__proto__:null,Renderer:Ue,OrthographicCamera:Ke,PerspectiveCamera:Ye,Camera:Ye,Group:Qe,Scene:et,BoxGeometry:rt,CircleGeometry:it,ConeGeometry:st,CylinderGeometry:nt,DodecahedronGeometry:at,IcosahedronGeometry:ot,LatheGeometry:ht,OctahedronGeometry:ut,PolyhedronGeometry:dt,RingGeometry:mt,SphereGeometry:ct,TetrahedronGeometry:lt,TorusGeometry:ft,TorusKnotGeometry:pt,TubeGeometry:gt,AmbientLight:bt,DirectionalLight:vt,HemisphereLight:St,PointLight:xt,RectAreaLight:Nt,SpotLight:wt,BasicMaterial:Ct,LambertMaterial:Mt,MatcapMaterial:Gt,PhongMaterial:zt,PhysicalMaterial:Lt,StandardMaterial:Rt,SubSurfaceMaterial:At,ToonMaterial:Ot,Texture:Ft,CubeTexture:Ut,Mesh:Dt,Box:$t,Circle:Ht,Cone:Wt,Cylinder:Vt,Dodecahedron:Xt,Icosahedron:qt,Lathe:Zt,Octahedron:Kt,Plane:Yt,Polyhedron:Jt,Ring:Qt,Sphere:er,Tetrahedron:tr,Text:ir,Torus:sr,TorusKnot:nr,Tube:ar,Gem:or,Image:hr,InstancedMesh:ur,MirrorMesh:dr,RefractionMesh:mr,Sprite:cr,EffectComposer:lr,RenderPass:pr,BokehPass:gr,FilmPass:yr,FXAAPass:br,HalftonePass:vr,SMAAPass:Sr,TiltShiftPass:wr,UnrealBloomPass:_r,ZoomBlurPass:Mr,setFromProp:De,bindProp:$e,propsValues:He,lerp:We,lerpv2:Ve,lerpv3:Xe,limit:qe,getMatcapUrl:Ze}),zr={install:function(e){["Camera","OrthographicCamera","PerspectiveCamera","Renderer","Scene","Group","BoxGeometry","CircleGeometry","ConeGeometry","CylinderGeometry","DodecahedronGeometry","IcosahedronGeometry","LatheGeometry","OctahedronGeometry","PolyhedronGeometry","RingGeometry","SphereGeometry","TetrahedronGeometry","TorusGeometry","TorusKnotGeometry","TubeGeometry","AmbientLight","DirectionalLight","HemisphereLight","PointLight","RectAreaLight","SpotLight","BasicMaterial","LambertMaterial","MatcapMaterial","PhongMaterial","PhysicalMaterial","ShaderMaterial","StandardMaterial","SubSurfaceMaterial","ToonMaterial","Texture","CubeTexture","Box","Circle","Cone","Cylinder","Dodecahedron","Icosahedron","Mesh","Lathe","Octahedron","Plane","Polyhedron","Ring","Sphere","Tetrahedron","Text","Torus","TorusKnot","Tube","Gem","Image","InstancedMesh","MirrorMesh","RefractionMesh","Sprite","BokehPass","EffectComposer","FilmPass","FXAAPass","HalftonePass","RenderPass","SAOPass","SMAAPass","TiltShiftPass","UnrealBloomPass","ZoomBlurPass","GLTFViewer"].forEach((function(t){e.component(t,Gr[t])}))}};function Ir(e){return i(e).use(zr)}export{bt as AmbientLight,Ct as BasicMaterial,gr as BokehPass,$t as Box,rt as BoxGeometry,Ye as Camera,Ht as Circle,it as CircleGeometry,Wt as Cone,st as ConeGeometry,Ut as CubeTexture,Vt as Cylinder,nt as CylinderGeometry,vt as DirectionalLight,Xt as Dodecahedron,at as DodecahedronGeometry,lr as EffectComposer,br as FXAAPass,yr as FilmPass,or as Gem,Qe as Group,vr as HalftonePass,St as HemisphereLight,qt as Icosahedron,ot as IcosahedronGeometry,hr as Image,ur as InstancedMesh,Mt as LambertMaterial,Zt as Lathe,ht as LatheGeometry,Gt as MatcapMaterial,Dt as Mesh,dr as MirrorMesh,Kt as Octahedron,ut as OctahedronGeometry,Ke as OrthographicCamera,Ye as PerspectiveCamera,zt as PhongMaterial,Lt as PhysicalMaterial,Yt as Plane,xt as PointLight,Jt as Polyhedron,dt as PolyhedronGeometry,Nt as RectAreaLight,mr as RefractionMesh,pr as RenderPass,Ue as Renderer,Qt as Ring,mt as RingGeometry,Sr as SMAAPass,et as Scene,er as Sphere,ct as SphereGeometry,wt as SpotLight,cr as Sprite,Rt as StandardMaterial,At as SubSurfaceMaterial,tr as Tetrahedron,lt as TetrahedronGeometry,ir as Text,Ft as Texture,wr as TiltShiftPass,Ot as ToonMaterial,sr as Torus,ft as TorusGeometry,nr as TorusKnot,pt as TorusKnotGeometry,zr as TroisJSVuePlugin,ar as Tube,gt as TubeGeometry,_r as UnrealBloomPass,Mr as ZoomBlurPass,$e as bindProp,Ir as createApp,Ze as getMatcapUrl,We as lerp,Ve as lerpv2,Xe as lerpv3,qe as limit,He as propsValues,De as setFromProp}; //# sourceMappingURL=trois.module.min.js.map diff --git a/build/trois.module.min.js.map b/build/trois.module.min.js.map index daf86c5..cfc8a89 100644 --- a/build/trois.module.min.js.map +++ b/build/trois.module.min.js.map @@ -1 +1 @@ -{"version":3,"file":"trois.module.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: [Object, Vector3], default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n // this.camera.updateProjectionMatrix();\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: {\r\n three: 'three',\r\n scene: 'scene',\r\n group: { default: null },\r\n },\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent = this.group ? this.group : this.scene;\r\n\r\n this.group = new Group();\r\n useBindProp(this, 'position', this.group.position);\r\n useBindProp(this, 'rotation', this.group.rotation);\r\n useBindProp(this, 'scale', this.group.scale);\r\n\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n scene: 'scene',\n group: { default: null },\n },\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['id', 'transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n rendererComponent: 'rendererComponent',\n group: { default: null },\n },\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: {\n three: 'three',\n scene: 'scene',\n group: { default: null },\n },\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n created() {\n this.parent = this.group ? this.group : this.scene;\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","onResize","window","addEventListener","setSize","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","setFromProp","prop","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","useBindProp","comp","ref","toRef","watch","deep","inject","Number","near","far","zoom","created","OrthographicCamera","p","__hmrId","lookAt","PerspectiveCamera","v","group","rotation","scale","parent","Group","add","unmounted","remove","id","background","Scene","Color","emits","rotateX","rotateY","rotateZ","mesh","watchProps","$props","beforeMount","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","extends","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxBufferGeometry","radius","segments","thetaStart","thetaLength","CircleBufferGeometry","radialSegments","openEnded","ConeBufferGeometry","radiusTop","radiusBottom","CylinderBufferGeometry","detail","DodecahedronBufferGeometry","IcosahedronBufferGeometry","points","Array","phiStart","phiLength","LatheBufferGeometry","OctahedronBufferGeometry","vertices","indices","PolyhedronBufferGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","tube","tubularSegments","arc","TorusBufferGeometry","q","TorusKnotBufferGeometry","path","Curve","radiusSegments","closed","TubeBufferGeometry","color","intensity","castShadow","shadowMapSize","light","mapSize","Light","AmbientLight","DirectionalLight","distance","decay","PointLight","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","src","name","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","clone","_key","_value","TShaderMaterial","lights","MeshToonMaterial","onLoad","Function","onProgress","onError","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","mapping","CubeRefractionMapping","materialId","receiveShadow","initMesh","removeIntersectObject","Mesh","over","component","addIntersectObject","event","bindProps","PlaneBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","font","FontLoader","TextBufferGeometry","center","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","minFilter","LinearMipmapLinearFilter","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","attributes","array","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","useBindPropValue","srcProp","dst","dstProp","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","TroisJSVuePlugin","install","app","TROIS"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trois.module.min.js","sources":["../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Object3D.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/HemisphereLight.js","../src/lights/PointLight.js","../src/lights/RectAreaLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ShaderMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../src/effects/EffectComposer.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../src/effects/BokehPass.js","../src/effects/FilmPass.js","../src/effects/FXAAPass.js","../src/effects/HalftonePass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/effects/TiltShiftPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/plugin.js"],"sourcesContent":["import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n } else {\n setSize(conf.width | 300, conf.height | 150);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n */\n function updateMouse(e) {\n const rect = e.target.getBoundingClientRect();\n mouse.x = ((e.clientX - rect.left) / size.width) * 2 - 1;\n mouse.y = -((e.clientY - rect.top) / size.height) * 2 + 1;\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n updateMouse(e);\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n updateMouse(e);\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n name: 'Renderer',\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: false },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.renderer = this.three.renderer;\n this.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n __hmrId: 'Renderer',\n};\n","import { toRef, watch } from 'vue';\n\nexport function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function bindProp(src, srcProp, dst, dstProp) {\n if (!dstProp) dstProp = srcProp;\n const ref = toRef(src, srcProp);\n if (ref.value instanceof Object) {\n setFromProp(dst[dstProp], ref.value);\n watch(ref, (value) => { setFromProp(dst[dstProp], value); }, { deep: true });\n } else {\n if (ref.value) dst[dstProp] = src[srcProp];\n watch(ref, (value) => { dst[dstProp] = value; });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { OrthographicCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'OrthographicCamera',\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'PerspectiveCamera',\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n lookAt: { type: Object, default: null },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n bindProp(this, 'position', this.camera);\n\n if (this.lookAt) this.camera.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.camera.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() { return []; },\n __hmrId: 'PerspectiveCamera',\n};\n","import { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n name: 'Object3D',\n inject: ['three', 'scene', 'rendererComponent'],\n props: {\n position: { type: Object, default: { x: 0, y: 0, z: 0 } },\n rotation: { type: Object, default: { x: 0, y: 0, z: 0 } },\n scale: { type: Object, default: { x: 1, y: 1, z: 1 } },\n lookAt: { type: Object, default: null },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.$parent.remove) this.$parent.remove(this.o3d);\n },\n methods: {\n initObject3D(o3d) {\n this.o3d = o3d;\n\n bindProp(this, 'position', this.o3d);\n bindProp(this, 'rotation', this.o3d);\n bindProp(this, 'scale', this.o3d);\n\n // fix lookat.x\n if (this.lookAt) this.o3d.lookAt(this.lookAt.x, this.lookAt.y, this.lookAt.z);\n watch(() => this.lookAt, (v) => { this.o3d.lookAt(v.x, v.y, v.z); }, { deep: true });\n\n if (this.$parent.add) this.$parent.add(this.o3d);\n },\n add(o) { this.o3d.add(o); },\n remove(o) { this.o3d.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Object3D',\n};\n","import { Group } from 'three';\nimport Object3D from './Object3D.js';\n\nexport default {\n name: 'Group',\n extends: Object3D,\n created() {\n this.group = new Group();\n this.initObject3D(this.group);\n },\n __hmrId: 'Group',\n};\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n name: 'Scene',\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n add(o) { this.scene.add(o); },\n remove(o) { this.scene.remove(o); },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Scene',\n};\n","import { watch } from 'vue';\n\nexport default {\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() { return []; },\n};\n","import { BoxGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { watch } from 'vue';\nimport Object3D from '../core/Object3D.js';\nimport { bindProp, setFromProp } from '../tools.js';\n\nexport default {\n extends: Object3D,\n name: 'Light',\n props: {\n color: { type: String, default: '#ffffff' },\n intensity: { type: Number, default: 1 },\n castShadow: { type: Boolean, default: false },\n shadowMapSize: { type: Object, default: { x: 512, y: 512 } },\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n unmounted() {\n if (this.light.target) this.$parent.remove(this.light.target);\n },\n methods: {\n initLight() {\n if (this.light.target) {\n bindProp(this, 'target', this.light.target, 'position');\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.initObject3D(this.light);\n if (this.light.target) this.$parent.add(this.light.target);\n },\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n this.initLight();\n },\n __hmrId: 'DirectionalLight',\n};\n","import { HemisphereLight } from 'three';\nimport Light from './Light.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Light,\n props: {\n groundColor: { type: String, default: '#ffffff' },\n },\n created() {\n this.light = new HemisphereLight(this.color, this.groundColor, this.intensity);\n bindProp(this, 'groundColor', this.light);\n this.initLight();\n },\n __hmrId: 'HemisphereLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n this.initLight();\n },\n __hmrId: 'PointLight',\n};\n","import { RectAreaLight } from 'three';\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';\nimport { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n width: { type: Number, default: 10 },\n height: { type: Number, default: 10 },\n helper: Boolean,\n },\n created() {\n RectAreaLightUniformsLib.init();\n this.light = new RectAreaLight(this.color, this.intensity, this.width, this.height);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n\n if (this.helper) {\n this.lightHelper = new RectAreaLightHelper(this.light);\n this.$parent.add(this.lightHelper);\n }\n\n this.initLight();\n },\n unmounted() {\n if (this.lightHelper) this.$parent.remove(this.lightHelper);\n },\n __hmrId: 'RectAreaLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: { type: Number, default: Math.PI / 3 },\n decay: { type: Number, default: 1 },\n distance: { type: Number, default: 0 },\n penumbra: { type: Number, default: 0 },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n this.initLight();\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n return this.$slots.default ? this.$slots.default() : [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial } from 'three';\nimport { watch } from 'vue';\nimport { bindProp, propsValues } from '../tools.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: { x: 1, y: 1 } },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n bindProp(this, 'normalScale', this.material);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include ',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n color: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n\n Object.entries(this.$props).forEach(([key, value]) => {\n let _key = key, _value = value;\n if (['color', 'thicknessColor'].includes(key)) {\n if (key === 'color') _key = 'diffuse';\n _value = new Color(value);\n }\n if (!['transparent', 'vertexColors'].includes(key)) {\n uniforms[_key].value = _value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","export default {\n inject: ['three', 'mesh'],\n props: {\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n created() {\n this.createMaterial();\n this.mesh.setMaterial(this.material);\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { ClampToEdgeWrapping, LinearFilter, LinearMipmapLinearFilter, TextureLoader, UVMapping } from 'three';\nimport { watch } from 'vue';\nimport { bindProp } from '../tools.js';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n id: { type: String, default: 'map' },\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n mapping: { type: Number, default: UVMapping },\n wrapS: { type: Number, default: ClampToEdgeWrapping },\n wrapT: { type: Number, default: ClampToEdgeWrapping },\n magFilter: { type: Number, default: LinearFilter },\n minFilter: { type: Number, default: LinearMipmapLinearFilter },\n repeat: { type: Object, default: { x: 1, y: 1 } },\n rotation: { type: Number, default: 0 },\n center: { type: Object, default: { x: 0, y: 0 } },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n const wathProps = ['mapping', 'wrapS', 'wrapT', 'magFilter', 'minFilter', 'repeat', 'rotation', 'rotation', 'center'];\n wathProps.forEach(prop => {\n bindProp(this, prop, this.texture);\n });\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() { return []; },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { watch } from 'vue';\nimport { Mesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n name: 'Mesh',\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n if (!this.mesh && !this.loading) this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new Mesh(this.geometry, this.material);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n unmounted() {\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n }\n // for predefined mesh (geometry and material are not unmounted)\n if (this.geometry) this.geometry.dispose();\n if (this.material) this.material.dispose();\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.loading = false;\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n tubularSegments: { type: Number, default: 64 },\n radialSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.tubularSegments, this.radialSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { CatmullRomCurve3, Curve, TubeGeometry, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n points: Array,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n const watchProps = ['tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], (v) => {\n this.refreshGeometry();\n });\n });\n // watch(() => this.points, () => {\n // this.updatePoints();\n // });\n },\n methods: {\n createGeometry() {\n let curve;\n if (this.points) {\n curve = new CatmullRomCurve3(this.points);\n } else if (this.path) {\n curve = this.path;\n } else {\n console.error('Missing path curve or points.');\n }\n this.geometry = new TubeGeometry(curve, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n updateCurve() {\n updateTubeGeometryPoints(this.geometry, this.points);\n },\n },\n __hmrId: 'Tube',\n};\n\nfunction updateTubeGeometryPoints(tube, points) {\n const curve = new CatmullRomCurve3(points);\n const { radialSegments, radius, tubularSegments, closed } = tube.parameters;\n const frames = curve.computeFrenetFrames(tubularSegments, closed);\n tube.tangents = frames.tangents;\n tube.normals = frames.normals;\n tube.binormals = frames.binormals;\n tube.parameters.path = curve;\n\n const pArray = tube.attributes.position.array;\n const nArray = tube.attributes.normal.array;\n const normal = new Vector3();\n let P;\n\n for (let i = 0; i < tubularSegments; i++) {\n updateSegment(i);\n }\n updateSegment(tubularSegments);\n\n tube.attributes.position.needsUpdate = true;\n tube.attributes.normal.needsUpdate = true;\n\n function updateSegment(i) {\n P = curve.getPointAt(i / tubularSegments, P);\n const N = frames.normals[i];\n const B = frames.binormals[i];\n for (let j = 0; j <= radialSegments; j++) {\n const v = j / radialSegments * Math.PI * 2;\n const sin = Math.sin(v);\n const cos = -Math.cos(v);\n normal.x = (cos * N.x + sin * B.x);\n normal.y = (cos * N.y + sin * B.y);\n normal.z = (cos * N.z + sin * B.z);\n normal.normalize();\n const index = (i * (radialSegments + 1) + j) * 3;\n nArray[index] = normal.x;\n nArray[index + 1] = normal.y;\n nArray[index + 2] = normal.z;\n pArray[index] = P.x + radius * normal.x;\n pArray[index + 1] = P.y + radius * normal.y;\n pArray[index + 2] = P.z + radius * normal.z;\n }\n }\n}\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.$parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n bindProp(this, 'position', this.meshBack);\n bindProp(this, 'rotation', this.meshBack);\n bindProp(this, 'scale', this.meshBack);\n this.$parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { watch } from 'vue';\nimport { InstancedMesh } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n props: {\n castShadow: Boolean,\n receiveShadow: Boolean,\n count: Number,\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n created() {\n this.initMesh();\n },\n methods: {\n initMesh() {\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n this.initObject3D(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\nimport Mesh from './Mesh.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.$parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n bindProp(this, 'position', this.cubeCamera);\n this.$parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport Object3D from '../core/Object3D.js';\n\nexport default {\n extends: Object3D,\n emits: ['loaded'],\n props: {\n src: String,\n },\n data() {\n return {\n loading: true,\n };\n },\n created() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n this.initObject3D(this.sprite);\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n },\n methods: {\n onLoaded() {\n this.loading = false;\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n __hmrId: 'Sprite',\n};\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n bindProp(this, 'blurRadius', uniforms.blurRadius, 'value');\n bindProp(this, 'gradientRadius', uniforms.gradientRadius, 'value');\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine, { deep: true });\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport { bindProp } from '../tools.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n bindProp(this, 'center', uniforms.center, 'value');\n bindProp(this, 'strength', uniforms.strength, 'value');\n },\n __hmrId: 'ZoomBlurPass',\n};\n","import { createApp as _createApp } from 'vue';\nimport * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'HemisphereLight',\n 'PointLight',\n 'RectAreaLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n\nexport function createApp(params) {\n return _createApp(params).use(TroisJSVuePlugin);\n};\n"],"names":["useThree","const","conf","canvas","antialias","alpha","autoClear","orbit_ctrl","mouse_move","mouse_raycast","mouse_over","click","resize","width","height","size","wWidth","wHeight","ratio","afterInitCallbacks","afterResizeCallbacks","beforeRenderCallbacks","mouse","Vector2","mouseV3","Vector3","mousePlane","Plane","raycaster","Raycaster","intersectObjects","obj","renderer","camera","cameraCtrl","materials","scene","params","Object","entries","forEach","key","value","console","error","WebGLRenderer","orbitCtrl","OrbitControls","domElement","onResize","window","addEventListener","setSize","mouse_move_element","document","body","onMousemove","onMouseleave","onClick","c","removeEventListener","dispose","this","update","render","composer","callback","push","filter","o","indexOf","i","splice","updateMouse","e","rect","target","getBoundingClientRect","x","clientX","left","y","clientY","top","setFromCamera","objects","length","object","onMousechange","getWorldDirection","normal","normalize","ray","intersectPlane","onObjects","offObjects","hover","onHover","let","innerWidth","innerHeight","elt","parentNode","clientWidth","clientHeight","aspect","updateProjectionMatrix","type","right","bottom","wsize","vFOV","fov","Math","PI","h","tan","abs","position","z","getCameraSize","name","props","Boolean","default","mouseMove","String","mouseRaycast","mouseOver","shadow","setup","three","raf","onMountedCallbacks","provide","rendererComponent","mounted","$el","init","shadowMap","enabled","animateC","animate","beforeUnmount","methods","onMounted","onBeforeRender","onAfterResize","requestAnimationFrame","renderC","$slots","__hmrId","setFromProp","prop","bindProp","src","srcProp","dst","dstProp","ref","toRef","watch","deep","propsValues","exclude","values","includes","lerp","value1","value2","amount","lerpv2","v1","v2","lerpv3","limit","val","min","max","getMatcapUrl","hash","format","MATCAP_ROOT","inject","Number","near","far","zoom","created","OrthographicCamera","p","lookAt","PerspectiveCamera","v","rotation","scale","unmounted","$parent","remove","o3d","initObject3D","add","extends","Object3D","group","Group","id","background","Scene","Color","rotateX","rotateY","rotateZ","mesh","watchProps","$props","createGeometry","rotateGeometry","setGeometry","geometry","addWatchers","refreshGeometry","oldGeo","Geometry","depth","widthSegments","heightSegments","depthSegments","w","d","BoxGeometry","radius","segments","thetaStart","thetaLength","CircleGeometry","radialSegments","openEnded","ConeGeometry","radiusTop","radiusBottom","CylinderGeometry","detail","DodecahedronGeometry","IcosahedronGeometry","points","Array","phiStart","phiLength","LatheGeometry","OctahedronGeometry","vertices","indices","PolyhedronGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingGeometry","SphereGeometry","TetrahedronGeometry","tube","tubularSegments","arc","TorusGeometry","q","TorusKnotGeometry","path","Curve","radiusSegments","closed","TubeGeometry","color","intensity","castShadow","shadowMapSize","light","initLight","mapSize","Light","AmbientLight","DirectionalLight","groundColor","HemisphereLight","distance","decay","PointLight","helper","RectAreaLightUniformsLib","RectAreaLight","lightHelper","RectAreaLightHelper","angle","penumbra","SpotLight","depthTest","depthWrite","flatShading","fog","opacity","side","FrontSide","transparent","vertexColors","material","createMaterial","setMaterial","_addWatchers","setProp","needsUpdate","setTexture","texture","set","Material","MeshBasicMaterial","MeshLambertMaterial","opts","matcap","TextureLoader","load","MeshMatcapMaterial","emissive","emissiveIntensity","reflectivity","shininess","specular","MeshPhongMaterial","aoMapIntensity","bumpScale","displacementBias","displacementScale","envMapIntensity","lightMapIntensity","metalness","normalScale","roughness","refractionRatio","wireframe","MeshStandardMaterial","keys","StandardMaterial","MeshPhysicalMaterial","string","find","replace","meshphongFragHead","ShaderChunk","meshphong_frag","slice","meshphongFragBody","SubsurfaceScatteringShader","uniforms","UniformsUtils","merge","ShaderLib","phong","thicknessColor","thicknessDistortion","thicknessAmbient","thicknessAttenuation","thicknessPower","thicknessScale","vertexShader","fragmentShader","lights_fragment_begin","split","join","clone","_key","_value","TShaderMaterial","lights","MeshToonMaterial","emits","onLoad","Function","onProgress","onError","mapping","UVMapping","wrapS","ClampToEdgeWrapping","wrapT","magFilter","LinearFilter","minFilter","LinearMipmapLinearFilter","repeat","center","refreshTexture","createTexture","onLoaded","$emit","urls","refraction","CubeTextureLoader","setPath","CubeRefractionMapping","receiveShadow","loading","initMesh","Mesh","over","component","addIntersectObject","event","removeIntersectObject","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","text","fontSrc","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","align","TextProps","data","font","FontLoader","TextBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","curve","CatmullRomCurve3","updateCurve","parameters","frames","computeFrenetFrames","tangents","normals","binormals","P","pArray","attributes","array","nArray","updateSegment","getPointAt","N","B","j","sin","cos","index","updateTubeGeometryPoints","cubeRTSize","cubeCameraNear","cubeCameraFar","autoUpdate","initGem","updateCubeRT","offBeforeRender","meshBack","materialBack","cubeRT","WebGLCubeRenderTarget","RGBFormat","generateMipmaps","cubeCamera","CubeCamera","envMap","premultipliedAlpha","BackSide","TMesh","visible","keepSize","DoubleSide","map","loadTexture","screen","iRatio","image","count","beforeMount","InstancedMesh","initMirrorMesh","SpriteMaterial","sprite","Sprite","updateUV","iWidth","iHeight","positions","passes","onAfterInit","EffectComposer","pass","addPass","offAfterResize","EffectPass","RenderPass","focus","aperture","maxblur","BokehPass","noiseIntensity","scanlinesIntensity","scanlinesCount","grayscale","nIntensity","sIntensity","sCount","FilmPass","ShaderPass","FXAAShader","resolution","shape","rotateR","rotateG","rotateB","scatter","HalftonePass","SMAAPass","tDiffuse","blurRadius","gradientRadius","start","end","delta","texSize","DefaultShader","TiltShift","pass1","uniforms1","updateFocusLine","copy","dv","sub","strength","threshold","UnrealBloomPass","ZoomBlur","TroisJSVuePlugin","install","app","comp","TROIS","createApp","_createApp","use"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 2529491..60d1c26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "troisjs", - "version": "0.1.9", + "version": "0.1.12", "scripts": { "dev": "vite", "build": "vite build",