gl-draw 0.9.0-beta.7 → 0.9.0-beta.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/BaseObject.js +1 -1
  2. package/dist/BaseObject.module.js +16 -11
  3. package/dist/colorCorrection.js +1 -0
  4. package/dist/colorCorrection.module.js +25 -0
  5. package/dist/core/BaseObject.d.ts +1 -0
  6. package/dist/core/Camera.d.ts +2 -0
  7. package/dist/core/Composer.d.ts +5 -1
  8. package/dist/core/Control.d.ts +5 -0
  9. package/dist/core/Pencil.d.ts +8 -2
  10. package/dist/core/Renderer.d.ts +10 -7
  11. package/dist/core/pass/CrossFadePass.d.ts +11 -0
  12. package/dist/effect/index.js +3 -3
  13. package/dist/effect/index.module.js +1 -1
  14. package/dist/events.js +1 -0
  15. package/dist/events.module.js +234 -0
  16. package/dist/geojson/china.json +1 -103310
  17. package/dist/index.js +18 -1
  18. package/dist/index.module.js +352 -493
  19. package/dist/objects/conicPolygon/geometry/index.d.ts +11 -12
  20. package/dist/objects/conicPolygon/index.d.ts +4 -3
  21. package/dist/objects/extrudePolygon/ExtrudeGeometry.d.ts +4 -1
  22. package/dist/objects/extrudePolygon/createGeometry.d.ts +17 -1
  23. package/dist/objects/extrudePolygon/getSplitTexture.d.ts +12 -0
  24. package/dist/objects/extrudePolygon/getWorkerGeometry.d.ts +17 -1
  25. package/dist/objects/extrudePolygon/index.d.ts +4 -0
  26. package/dist/objects/index.d.ts +3 -1
  27. package/dist/objects/index.js +120 -125
  28. package/dist/objects/index.module.js +1349 -1011
  29. package/dist/objects/line/createGeometry.d.ts +5 -5
  30. package/dist/objects/line/getWorkerGeometry.d.ts +2 -1
  31. package/dist/objects/line/index.d.ts +8 -25
  32. package/dist/objects/line/meshLine/MeshLineGeometry.d.ts +40 -0
  33. package/dist/objects/line/meshLine/MeshLineMaterial.d.ts +48 -0
  34. package/dist/objects/line/meshLine/index.d.ts +3 -89
  35. package/dist/objects/line/meshLine/raycast.d.ts +3 -0
  36. package/dist/plugins/CanvasStream.d.ts +15 -0
  37. package/dist/plugins/Data.d.ts +1 -0
  38. package/dist/plugins/Draw.d.ts +3 -0
  39. package/dist/plugins/Loader/VideoTextureLoader.d.ts +5 -0
  40. package/dist/plugins/Loader/index.d.ts +36 -0
  41. package/dist/plugins/Worker.d.ts +2 -0
  42. package/dist/plugins/index.d.ts +2 -0
  43. package/dist/plugins/index.js +1 -1
  44. package/dist/plugins/index.module.js +203 -87
  45. package/dist/utils/colorCorrection.d.ts +13 -1
  46. package/dist/utils/index.d.ts +0 -3
  47. package/dist/utils/index.js +1 -1
  48. package/dist/utils/index.module.js +85 -135
  49. package/dist/utils/uvGenerator.d.ts +12 -0
  50. package/dist/uvGenerator.js +1 -1
  51. package/dist/uvGenerator.module.js +69 -62
  52. package/dist/worker/extrudePolygon.w.js +661 -400
  53. package/dist/worker/line.w.js +2 -2
  54. package/package.json +13 -10
  55. package/dist/makePromiseCreator.js +0 -1
  56. package/dist/makePromiseCreator.module.js +0 -24
  57. package/dist/objects/line/meshLine/shader/fragment.d.ts +0 -2
  58. package/dist/objects/line/meshLine/shader/vertex.d.ts +0 -2
  59. package/dist/utils/exception.d.ts +0 -26
  60. package/dist/utils/makePromiseCreator.d.ts +0 -6
  61. package/dist/utils/timer.d.ts +0 -9
  62. package/dist/utils/to.d.ts +0 -8
package/dist/index.js CHANGED
@@ -1 +1,18 @@
1
- "use strict";var Y=Object.defineProperty,Z=Object.defineProperties;var $=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var J=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable;var A=(n,e,t)=>e in n?Y(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e)=>{for(var t in e||(e={}))J.call(e,t)&&A(n,t,e[t]);if(z)for(var t of z(e))Q.call(e,t)&&A(n,t,e[t]);return n},_=(n,e)=>Z(n,$(e));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ee=require("three"),te=require("deepmerge"),ne=require("three/examples/jsm/libs/stats.module"),se=require("lil-gui"),re=require("./disposeMesh.js");require("idb-keyval");const ie=require("three/examples/jsm/controls/OrbitControls"),oe=require("three/examples/jsm/renderers/CSS3DRenderer"),ae=require("three/examples/jsm/renderers/CSS2DRenderer"),g=require("postprocessing"),ce=require("./isPlainObject.js"),le=require("./BaseObject.js");require("./makePromiseCreator.js");function de(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const d=de(ee);var R={},fe={get exports(){return R},set exports(n){R=n}},w=typeof Reflect=="object"?Reflect:null,D=w&&typeof w.apply=="function"?w.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)},x;w&&typeof w.ownKeys=="function"?x=w.ownKeys:Object.getOwnPropertySymbols?x=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:x=function(e){return Object.getOwnPropertyNames(e)};function ue(n){console&&console.warn&&console.warn(n)}var G=Number.isNaN||function(e){return e!==e};function l(){l.init.call(this)}fe.exports=l;R.once=ve;l.EventEmitter=l;l.prototype._events=void 0;l.prototype._eventsCount=0;l.prototype._maxListeners=void 0;var T=10;function S(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(l,"defaultMaxListeners",{enumerable:!0,get:function(){return T},set:function(n){if(typeof n!="number"||n<0||G(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");T=n}});l.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};l.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||G(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function N(n){return n._maxListeners===void 0?l.defaultMaxListeners:n._maxListeners}l.prototype.getMaxListeners=function(){return N(this)};l.prototype.emit=function(e){for(var t=[],s=1;s<arguments.length;s++)t.push(arguments[s]);var r=e==="error",o=this._events;if(o!==void 0)r=r&&o.error===void 0;else if(!r)return!1;if(r){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=o[e];if(c===void 0)return!1;if(typeof c=="function")D(c,this,t);else for(var u=c.length,f=H(c,u),s=0;s<u;++s)D(f[s],this,t);return!0};function F(n,e,t,s){var r,o,i;if(S(t),o=n._events,o===void 0?(o=n._events=Object.create(null),n._eventsCount=0):(o.newListener!==void 0&&(n.emit("newListener",e,t.listener?t.listener:t),o=n._events),i=o[e]),i===void 0)i=o[e]=t,++n._eventsCount;else if(typeof i=="function"?i=o[e]=s?[t,i]:[i,t]:s?i.unshift(t):i.push(t),r=N(n),r>0&&i.length>r&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=n,a.type=e,a.count=i.length,ue(a)}return n}l.prototype.addListener=function(e,t){return F(this,e,t,!1)};l.prototype.on=l.prototype.addListener;l.prototype.prependListener=function(e,t){return F(this,e,t,!0)};function he(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function q(n,e,t){var s={fired:!1,wrapFn:void 0,target:n,type:e,listener:t},r=he.bind(s);return r.listener=t,s.wrapFn=r,r}l.prototype.once=function(e,t){return S(t),this.on(e,q(this,e,t)),this};l.prototype.prependOnceListener=function(e,t){return S(t),this.prependListener(e,q(this,e,t)),this};l.prototype.removeListener=function(e,t){var s,r,o,i,a;if(S(t),r=this._events,r===void 0)return this;if(s=r[e],s===void 0)return this;if(s===t||s.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,s.listener||t));else if(typeof s!="function"){for(o=-1,i=s.length-1;i>=0;i--)if(s[i]===t||s[i].listener===t){a=s[i].listener,o=i;break}if(o<0)return this;o===0?s.shift():me(s,o),s.length===1&&(r[e]=s[0]),r.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};l.prototype.off=l.prototype.removeListener;l.prototype.removeAllListeners=function(e){var t,s,r;if(s=this._events,s===void 0)return this;if(s.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):s[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete s[e]),this;if(arguments.length===0){var o=Object.keys(s),i;for(r=0;r<o.length;++r)i=o[r],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=s[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this};function V(n,e,t){var s=n._events;if(s===void 0)return[];var r=s[e];return r===void 0?[]:typeof r=="function"?t?[r.listener||r]:[r]:t?pe(r):H(r,r.length)}l.prototype.listeners=function(e){return V(this,e,!0)};l.prototype.rawListeners=function(e){return V(this,e,!1)};l.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):k.call(n,e)};l.prototype.listenerCount=k;function k(n){var e=this._events;if(e!==void 0){var t=e[n];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}l.prototype.eventNames=function(){return this._eventsCount>0?x(this._events):[]};function H(n,e){for(var t=new Array(e),s=0;s<e;++s)t[s]=n[s];return t}function me(n,e){for(;e+1<n.length;e++)n[e]=n[e+1];n.pop()}function pe(n){for(var e=new Array(n.length),t=0;t<e.length;++t)e[t]=n[t].listener||n[t];return e}function ve(n,e){return new Promise(function(t,s){function r(i){n.removeListener(e,o),s(i)}function o(){typeof n.removeListener=="function"&&n.removeListener("error",r),t([].slice.call(arguments))}W(n,e,o,{once:!0}),e!=="error"&&ge(n,r,{once:!0})})}function ge(n,e,t){typeof n.on=="function"&&W(n,"error",e,t)}function W(n,e,t,s){if(typeof n.on=="function")s.once?n.once(e,t):n.on(e,t);else if(typeof n.addEventListener=="function")n.addEventListener(e,function r(o){s.once&&n.removeEventListener(e,r),t(o)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof n)}class O{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),r=this.guiParams[t];Object.keys(r).forEach(o=>{const{min:i,max:a,step:c,name:u,paramMap:f,items:m,value:p,target:v}=r[o],M=o.toLowerCase().indexOf("color")>-1;let h;const E=typeof p=="undefined"&&v,b=E?v():r[o],y=E?o:"value";m?h=s.add(b,y,m):M?h=s.addColor(b,y):h=s.add(b,y),h=h.name(u||o),typeof i!="undefined"&&(h=h.min(i)),typeof a!="undefined"&&(h=h.max(a)),typeof c!="undefined"&&(h=h.step(c)),h=h.onChange(()=>{this.setTargetValue(t,o,b[y],f)}),E&&h.listen()})})}setTargetValue(e,t,s,r){const{onChange:o,target:i,value:a}=this.guiParams[e][t],c=t.toLowerCase().indexOf("color")>-1;if(i&&!(typeof a=="undefined"&&i)){let f=i();Array.isArray(f)||(f=[f]),f.forEach(m=>{if(m)if(c)try{m[r||t].set(s)}catch(p){t!=="color"&&!r&&console.warn(`${t} is not a color,set paramMap`)}else m[r||t]=s})}o&&o(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const I={None:d.NoToneMapping,Linear:d.LinearToneMapping,Reinhard:d.ReinhardToneMapping,Cineon:d.CineonToneMapping,ACESFilmic:d.ACESFilmicToneMapping},Ce={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMapping:"None",toneMappingExposure:1,alpha:!1,outputEncoding:d.LinearEncoding,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class be{constructor(e){this.options=e;const{width:t,height:s,rendererParams:r}=e,{canvas:o,context:i,alpha:a,devicePixelRatio:c,antialias:u,powerPreference:f,toneMapping:m,toneMappingExposure:p,outputEncoding:v,logarithmicDepthBuffer:M,preserveDrawingBuffer:h,stencil:E,depth:b,physicallyCorrectLights:y}=r,C=new d.WebGLRenderer({canvas:o,context:i,alpha:a,antialias:u,powerPreference:f,logarithmicDepthBuffer:M,preserveDrawingBuffer:h,stencil:E,depth:b});C.setSize(t,s),C.setPixelRatio(c),C.toneMapping=I[m],C.toneMappingExposure=p,C.outputEncoding=v;const X=+d.REVISION<150?"physicallyCorrectLights":"useLegacyLights";C[X]=y,this.renderer=C}setSize(e,t){this.renderer.setSize(e,t)}render(){const{scene:e,camera:t}=this.options;this.renderer.render(e,t)}setGui(e){new O({renderer:{toneMapping:{value:this.options.rendererParams.toneMapping,items:I,target:()=>this.renderer},toneMappingExposure:{value:this.options.rendererParams.toneMappingExposure,min:0,max:16,target:()=>this.renderer}}}).showGui(e)}dispose(){var e,t,s;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.renderLists.dispose()}}const ye={fov:45,near:1,far:1e3};class Pe{constructor(e){this.oldCameraPosition=new d.Vector3,this.oldCameraRotation=new d.Euler,this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:r}=e;if(r instanceof d.Camera)this.camera=r,this.customCamera=!0;else{const{fov:o,far:i,near:a}=r,c=new d.PerspectiveCamera(o,t/s,a,i);c.position.set(0,0,400),c.lookAt(0,0,0),this.camera=c}}checkCameraChange(){const e=this.camera,t=this.oldCameraPosition.equals(e.position)&&this.oldCameraRotation.equals(e.rotation);return this.oldCameraPosition=e.position.clone(),this.oldCameraRotation=e.rotation.clone(),!t}setSize(e,t){this.camera instanceof d.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix()}setGui(e){const t=new O({camera:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}}});this.camera instanceof d.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const we={background:null};class Ee{constructor(e){this.options=e;const{camera:t,sceneParams:s}=e,{background:r}=s,o=new d.Scene;r&&(o.background=r),o.add(t),this.scene=o}addAxesHelper(){var t;const e=new d.AxesHelper(100);(t=this.scene)==null||t.add(e)}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{re.disposeMesh(t)})}}class Le{constructor(e){this.options=e;const{camera:t,controlParams:s,customControl:r}=e,{domElement:o}=s,i=r?new r(t,o):new ie.OrbitControls(t,o);i.minPolarAngle=Math.PI*.15,i.maxPolarAngle=Math.PI*.85,i.enableDamping=!0,i.dampingFactor=.063,i.autoRotate=!1,i.autoRotateSpeed=-60,i.enableZoom=!0,i.zoomSpeed=.2,this.control=i}limitPan({maxX:e=1/0,minX:t=-1/0,maxZ:s=1/0,minZ:r=-1/0,maxY:o=1/0,minY:i=-1/0}){const a=this.limitPanV||new d.Vector3,c=this.control,{camera:u}=this.options,f=new d.Vector3(t,i,r),m=new d.Vector3(e,o,s);this.limitPanV=a,a.copy(c.target),c.target.clamp(f,m),a.sub(c.target),u.position.sub(a)}update(){this.control.update()}dispose(){this.control.dispose()}}const B={zIndex:"auto"};class xe{constructor(e){this.container=e}addRenderer(e,t){const{container:s}=this,r=s.offsetWidth,o=s.offsetHeight,i=e==="css2d"?new ae.CSS2DRenderer:new oe.CSS3DRenderer;i.domElement.style.position="absolute",i.domElement.style.top="0",i.domElement.style.pointerEvents="none",i.domElement.style.zIndex=t.zIndex,i.setSize(r,o),s.appendChild(i.domElement),e==="css2d"?this.css2Drenderer=i:e==="css3d"&&(this.css3Drenderer=i)}setSize(e,t){var s,r;(s=this.css2Drenderer)==null||s.setSize(e,t),(r=this.css3Drenderer)==null||r.setSize(e,t)}render(e,t){var s,r;(s=this.css2Drenderer)==null||s.render(e,t),(r=this.css3Drenderer)==null||r.render(e,t)}dispose(){this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const Re={luminanceThreshold:.1,luminanceSmoothing:.3,mipmapBlur:!0,intensity:4};class Se{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:r,composerParams:o}=e,{multisampling:i}=o,{maxSamples:a}=t.capabilities,c=new g.EffectComposer(t,{multisampling:Math.min(i,a)});c.addPass(new g.RenderPass(s,r)),this.finalComposer=c,this.renderer=t,this.scene=s,this.camera=r}addCopyPass(){const e=new g.CopyPass;e.renderToScreen=!0,this.finalComposer.addPass(e),this.copyPass=e}addFXAAPass(){const{camera:e}=this,t=new g.FXAAEffect({blendFunction:g.BlendFunction.NORMAL}),s=new g.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addBloomPass(e){const{camera:t,scene:s}=this,r=new g.SelectiveBloomEffect(s,t,P({},e)),o=new g.EffectPass(t,r);o.enabled=!1,this.finalComposer.addPass(o),this.bloomPass=o,this.bloomEffect=r}addBloomGui(e){if(!this.bloomEffect)return;new O({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}this.bloomEffect.selection.toggle(e),this.bloomPass.enabled=!!this.bloomEffect.selection.size}getSize(){const{renderer:e}=this.options;return e.getSize(new d.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){this.finalComposer.setSize(e,t)}render(){this.active&&this.finalComposer.render()}dispose(){this.finalComposer.dispose()}}const Oe=()=>{try{const n=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&n.getContext("webgl2"))}catch(n){return!1}},L=!1,U=Oe()!==!1,K=class{constructor(n){this.raycaster=new d.Raycaster,this.installPlugins=new Map,this.event=new R.EventEmitter,this.clock=new d.Clock,this.userData={},this.options=te(K.options,n,{isMergeableObject:ce.isPlainObject});const{container:e,stats:t,gui:s,resizeObserver:r}=this.options;if(s){const o=new se;o.open(!1),this.gui=o}if(t){const o=new ne;o.showPanel(0),o.dom.style.position="absolute",e.appendChild(o.dom),this.stats=o}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControl(),r&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime()}get renderer(){return this.rendererController.renderer}get control(){var n;return(n=this.controlController)==null?void 0:n.control}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}use(n,...e){this.installPlugins.has(n)?console.log("plugin already installed"):typeof n.install=="function"&&(n.install(this,...e),this.installPlugins.set(n,!0))}init(){const{container:n,isdev:e,axesHelper:t,renderer:s,scene:r,camera:o}=this.options,{width:i,height:a}=this.getSize(),c=new Pe({isdev:e,width:i,height:a,cameraParams:o});this.gui&&c.setGui(this.gui);const u=c.camera,f=new Ee({camera:u,sceneParams:r}),m=f.scene,p=new be({width:i,height:a,scene:m,camera:u,isdev:e,rendererParams:_(P({},s),{antialias:!1})});this.gui&&p.setGui(this.gui);const v=p.renderer;t&&f.addAxesHelper(),this.sceneController=f,this.rendererController=p,this.cameraController=c,n.appendChild(v.domElement)}initComposer(){const{bloom:n,bloomParams:e,renderer:t,multisampling:s,passes:r}=this.options;let{antialias:o}=t;o==="msaa"&&!U&&(o=!1,console.warn("MSAA is not supported on this browser"));const i=new Se({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:o==="msaa"?s:0,type:d.UnsignedByteType,encoding:t.outputEncoding}});this.composerController=i,n&&(i.addBloomPass(e),this.gui&&i.addBloomGui(this.gui)),o==="fxaa"&&i.addFXAAPass(),r&&r.forEach(a=>{i.finalComposer.addPass(a)}),i.addCopyPass()}initCSSRenderer(){const{container:n,css2DRenderer:e,css3DRenderer:t,css2DRendererParams:s,css3DRendererParams:r}=this.options;if(e||t){const o=new xe(n);e&&o.addRenderer("css2d",s),t&&o.addRenderer("css3d",r),this.cssRendererController=o}}initControl(){const{control:n,controlParams:e}=this.options;if(n){const t=new Le({camera:this.camera,controlParams:{domElement:(e==null?void 0:e.domElement)||this.renderer.domElement},customControl:typeof n=="boolean"?void 0:n});this.controlController=t}}getSize(){const{container:n}=this.options;return{width:n.offsetWidth,height:n.offsetHeight}}initResizeObserver(){const{container:n}=this.options;if(this.resizeObserver)return;const e=new ResizeObserver(t=>{for(const s of t){const r=s.contentRect;this.handeleResize(r.width,r.height),this.render()}});e.observe(n),this.resizeObserver=e}handeleResize(n,e){const{rendererController:t,cameraController:s,composerController:r,cssRendererController:o}=this;s==null||s.setSize(n,e),t==null||t.setSize(n,e),r==null||r.setSize(n,e),o==null||o.setSize(n,e),this.installPlugins.forEach((i,a)=>{var c;(c=a.setSize)==null||c.call(a,n,e)}),this.event.emit("resize",{width:n,height:e})}pick(n,e,t=!1){const{raycaster:s,options:r}=this,{container:o}=r,i=new d.Vector2,a=o.getBoundingClientRect();if(i.x=(n.clientX-a.left)/(a.right-a.left)*2-1,i.y=-((n.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){s.setFromCamera(i,this.camera);const c=s.intersectObjects(e||this.scene.children,t);if(c.length)return{object:c[0].object,intersects:c}}}render(){var i,a,c,u,f;const{renderer:n,scene:e,camera:t,clock:s}=this;if(!n||!e||!t||this.options.staticRender&&!this.cameraController.checkCameraChange())return;const r=s.getDelta(),o=s.getElapsedTime();(i=this.controlController)==null||i.update(),this.installPlugins.forEach((m,p)=>{var v;(v=p.update)==null||v.call(p,r,o)}),(a=this.composerController)!=null&&a.active?this.composerController.render():(c=this.rendererController)==null||c.render(),(u=this.cssRendererController)==null||u.render(e,t),(f=this.stats)==null||f.update(),this.event.emit("render",{delta:r,elapsed:o})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}dispose(){var n,e,t,s,r,o,i;this.stop(),this.handeleResize(0,0),(n=this.resizeObserver)==null||n.unobserve(this.options.container),this.installPlugins.forEach((a,c)=>{var u;(u=c.dispose)==null||u.call(c)}),(e=this.controlController)==null||e.dispose(),(t=this.cssRendererController)==null||t.dispose(),(s=this.sceneController)==null||s.dispose(),(r=this.composerController)==null||r.dispose(),(o=this.rendererController)==null||o.dispose(),this.controlController=void 0,this.cssRendererController=void 0,(i=this.gui)==null||i.destroy(),this.event.removeAllListeners(),this.installPlugins.clear()}};let j=K;j.options={isdev:L,stats:L,gui:L,axesHelper:L,control:L,resizeObserver:!0,renderer:_(P({},Ce),{antialias:U?"msaa":"fxaa"}),staticRender:!1,multisampling:4,scene:we,camera:ye,bloom:!1,bloomParams:Re,css2DRenderer:!1,css2DRendererParams:P({},B),css3DRenderer:!1,css3DRendererParams:P({},B)};exports.BaseObject=le.BaseObject;exports.GUIObject=O;exports.Pencil=j;exports.default=j;
1
+ "use strict";var q=Object.defineProperty,_=Object.defineProperties;var k=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var z=(r,e,t)=>e in r?q(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,b=(r,e)=>{for(var t in e||(e={}))H.call(e,t)&&z(r,t,e[t]);if(M)for(var t of M(e))N.call(e,t)&&z(r,t,e[t]);return r},R=(r,e)=>_(r,k(e));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w=require("three"),U=require("@tweenjs/tween.js"),W=require("./events.js"),X=require("deepmerge"),Q=require("three/examples/jsm/libs/stats.module"),$=require("lil-gui"),D=require("./colorCorrection.js"),Y=require("./disposeMesh.js");require("idb-keyval");require("esus-lite");const Z=require("three/examples/jsm/controls/OrbitControls"),J=require("three/examples/jsm/renderers/CSS3DRenderer"),K=require("three/examples/jsm/renderers/CSS2DRenderer"),g=require("postprocessing"),ee=require("./isPlainObject.js"),te=require("./BaseObject.js");function L(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const l=L(w),A=L(U);class y{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),n=this.guiParams[t];Object.keys(n).forEach(i=>{const{min:o,max:c,step:a,name:d,paramMap:h,items:u,value:p,target:f}=n[i],x=i.toLowerCase().indexOf("color")>-1;let m;const E=typeof p=="undefined"&&f,P=E?f():n[i],v=E?i:"value";u?m=s.add(P,v,u):x?m=s.addColor(P,v):m=s.add(P,v),m=m.name(d||i),typeof o!="undefined"&&(m=m.min(o)),typeof c!="undefined"&&(m=m.max(c)),typeof a!="undefined"&&(m=m.step(a)),m=m.onChange(()=>{this.setTargetValue(t,i,P[v],h)}),E&&m.listen()})})}setTargetValue(e,t,s,n){const{onChange:i,target:o,value:c}=this.guiParams[e][t],a=t.toLowerCase().indexOf("color")>-1;if(o&&!(typeof c=="undefined"&&o)){let h=o();Array.isArray(h)||(h=[h]),h.forEach(u=>{if(u)if(a)try{u[n||t].set(s)}catch(p){t!=="color"&&!n&&console.warn(`${t} is not a color,set paramMap`)}else u[n||t]=s})}i&&i(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const B={None:l.NoToneMapping,Linear:l.LinearToneMapping,Reinhard:l.ReinhardToneMapping,Cineon:l.CineonToneMapping,ACESFilmic:l.ACESFilmicToneMapping},se={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMapping:"None",toneMappingExposure:1,alpha:!1,outputEncoding:D.TextureEncoding.Linear,outputColorSpace:D.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class re{constructor(e){this.options=e;const{width:t,height:s,rendererParams:n}=e,{canvas:i,context:o,alpha:c,devicePixelRatio:a,antialias:d,powerPreference:h,toneMapping:u,toneMappingExposure:p,outputEncoding:f,outputColorSpace:x,logarithmicDepthBuffer:m,preserveDrawingBuffer:E,stencil:P,depth:v,physicallyCorrectLights:V}=n,C=new l.WebGLRenderer({canvas:i,context:o,alpha:c,antialias:d,powerPreference:h,logarithmicDepthBuffer:m,preserveDrawingBuffer:E,stencil:P,depth:v});C.setSize(t,s),C.setPixelRatio(a),C.toneMapping=B[u],C.toneMappingExposure=p,+l.REVISION<152?C.outputEncoding=f:C.outputColorSpace=x;const I=+l.REVISION<150?"physicallyCorrectLights":"useLegacyLights";C[I]=V,this.renderer=C}setSize(e,t){this.renderer.setSize(e,t)}render(){const{scene:e,camera:t}=this.options;this.renderer.render(e,t)}setGui(e){new y({renderer:{toneMapping:{value:this.options.rendererParams.toneMapping,items:B,target:()=>this.renderer},toneMappingExposure:{value:this.options.rendererParams.toneMappingExposure,min:0,max:16,target:()=>this.renderer}}}).showGui(e)}dispose(){var e,t,s;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.renderLists.dispose()}}const oe={fov:45,near:1,far:1e3,up:new l.Vector3(0,1,0)};class ne{constructor(e){this.oldCameraPosition=new l.Vector3,this.oldCameraRotation=new l.Euler,this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:n}=e;if(n instanceof l.Camera)this.camera=n,this.customCamera=!0;else{const{fov:i,far:o,near:c,up:a}=n,d=new l.PerspectiveCamera(i,t/s,c,o);d.position.set(0,0,400),d.lookAt(0,0,0),d.up=a,this.camera=d}}checkCameraChange(){const e=this.camera,t=this.oldCameraPosition.equals(e.position)&&this.oldCameraRotation.equals(e.rotation);return this.oldCameraPosition=e.position.clone(),this.oldCameraRotation=e.rotation.clone(),!t}setSize(e,t){this.camera instanceof l.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix()}setGui(e){const t=new y({camera:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}}});this.camera instanceof l.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const ie={background:null};class ae{constructor(e){this.options=e;const{camera:t,sceneParams:s}=e,{background:n}=s,i=new l.Scene;n&&(i.background=n),i.add(t),this.scene=i}addAxesHelper(){var t;const e=new l.AxesHelper(100);(t=this.scene)==null||t.add(e)}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{Y.disposeMesh(t)})}}class ce{constructor(e){this.options=e;const{camera:t,controlParams:s,customControl:n}=e,{domElement:i}=s,o=n?new n(t,i):new Z.OrbitControls(t,i);o.enableDamping=!0,o.dampingFactor=.063,o.autoRotate=!1,o.autoRotateSpeed=-60,o.enableZoom=!0,o.zoomSpeed=.2,this.control=o}limitPan({maxX:e=1/0,minX:t=-1/0,maxZ:s=1/0,minZ:n=-1/0,maxY:i=1/0,minY:o=-1/0}){const c=this.limitPanV||new l.Vector3,a=this.control,{camera:d}=this.options,h=new l.Vector3(t,o,n),u=new l.Vector3(e,i,s);this.limitPanV=c,c.copy(a.target),a.target.clamp(h,u),c.sub(a.target),d.position.sub(c)}changeRotation({vertical:e,horizontal:t,distance:s}){const{camera:n}=this.options,i=this.control,o=t!=null?t:i.getAzimuthalAngle(),c=e!=null?e:i.getPolarAngle(),a=new l.Vector3;a.setFromSphericalCoords(s!=null?s:n.position.distanceTo(i.target),c,o);const d=new l.Quaternion().setFromUnitVectors(new l.Vector3(0,1,0),n.up);a.applyQuaternion(d),n.position.set(a.x+i.target.x,a.y+i.target.y,a.z+i.target.z),i.update()}update(){this.control.update()}dispose(){this.control.dispose()}}const T={zIndex:"auto"};class le{constructor(e){this.container=e}addRenderer(e,t){const{container:s}=this,n=s.offsetWidth,i=s.offsetHeight,o=e==="css2d"?new K.CSS2DRenderer:new J.CSS3DRenderer;o.domElement.style.position="absolute",o.domElement.style.top="0",o.domElement.style.pointerEvents="none",o.domElement.style.zIndex=t.zIndex,o.setSize(n,i),s.appendChild(o.domElement),e==="css2d"?this.css2Drenderer=o:e==="css3d"&&(this.css3Drenderer=o)}setSize(e,t){var s,n;(s=this.css2Drenderer)==null||s.setSize(e,t),(n=this.css3Drenderer)==null||n.setSize(e,t)}render(e,t){var s,n;(s=this.css2Drenderer)==null||s.render(e,t),(n=this.css3Drenderer)==null||n.render(e,t)}dispose(){this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const F=["encodings_fragment","colorspace_fragment"];class de extends w.ShaderMaterial{constructor(){super({uniforms:{inputBuffer:new w.Uniform(null),ratio:new w.Uniform(1)},fragmentShader:`
2
+ uniform sampler2D inputBuffer;
3
+ uniform float ratio;
4
+ varying vec2 vUv;
5
+ void main() {
6
+ vec4 texel = texture2D(inputBuffer, vUv);
7
+ gl_FragColor = texel * ratio;
8
+ // Support automatic output encoding.
9
+ #include <${+w.REVISION<154?F[0]:F[1]}>
10
+
11
+ }
12
+ `,vertexShader:`
13
+ varying vec2 vUv;
14
+ void main() {
15
+ vUv = position.xy * 0.5 + 0.5;
16
+ gl_Position = vec4(position.xy, 1.0, 1.0);
17
+ }
18
+ `,toneMapped:!1,depthWrite:!1,depthTest:!1})}}class he extends g.Pass{constructor(){super("CrossFadePass"),this.fullscreenMaterial=new de}render(e,t,s){const n=this.fullscreenMaterial;n.uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}const me={luminanceThreshold:.1,luminanceSmoothing:.3,mipmapBlur:!0,intensity:4};class ue{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:n,composerParams:i}=e,{multisampling:o}=i,{maxSamples:c}=t.capabilities,a=new g.EffectComposer(t,{multisampling:Math.min(o,c)});a.addPass(new g.RenderPass(s,n)),this.finalComposer=a,this.renderer=t,this.scene=s,this.camera=n}addCopyPass(){const e=new g.CopyPass;e.renderToScreen=!0,this.finalComposer.addPass(e),this.copyPass=e}addCrossFadePass(){const e=new he;this.finalComposer.addPass(e),this.crossFadePass=e}addFXAAPass(){const{camera:e}=this,t=new g.FXAAEffect({blendFunction:g.BlendFunction.NORMAL}),s=new g.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addBloomPass(e){const{camera:t,scene:s}=this,n=new g.SelectiveBloomEffect(s,t,b({},e)),i=new g.EffectPass(t,n);i.enabled=!1,this.finalComposer.addPass(i),this.bloomPass=i,this.bloomEffect=n}aaa(){}addBloomGui(e){if(!this.bloomEffect)return;new y({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e,t){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}e?t===!0?this.bloomEffect.selection.add(e):t===!1?this.bloomEffect.selection.delete(e):this.bloomEffect.selection.toggle(e):this.bloomEffect.selection.clear(),this.bloomPass.enabled=!!this.bloomEffect.selection.size}getSize(){const{renderer:e}=this.options;return e.getSize(new l.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){this.finalComposer.setSize(e,t)}render(){this.active&&this.finalComposer.render()}dispose(){this.finalComposer.dispose()}}const pe=()=>{try{const r=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&r.getContext("webgl2"))}catch(r){return!1}},S=!1,j=pe()!==!1,G=class{constructor(r,e){this.raycaster=new l.Raycaster,this.installPlugins=new Map,this.event=new W.eventsExports.EventEmitter,this.clock=new l.Clock,this.userData={},this.options=X(G.options,r,{isMergeableObject:ee.isPlainObject});const{container:t,stats:s,gui:n,resizeObserver:i}=this.options;if(n){const o=new $;o.open(!1),this.gui=o}if(s){const o=new Q;o.showPanel(0),o.dom.style.position="absolute",t.appendChild(o.dom),this.stats=o}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControl(),i&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),e&&(Array.isArray(e)?e.forEach(o=>this.use(o)):this.use(e))}get renderer(){return this.rendererController.renderer}get control(){var r;return(r=this.controlController)==null?void 0:r.control}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}use(r,...e){this.installPlugins.has(r)?console.log("plugin already installed"):typeof r.install=="function"&&(r.install(this,...e),this.installPlugins.set(r,!0))}init(){const{container:r,isdev:e,axesHelper:t,renderer:s,scene:n,camera:i}=this.options,{width:o,height:c}=this.getSize(),a=new ne({isdev:e,width:o,height:c,cameraParams:i});this.gui&&a.setGui(this.gui);const d=a.camera,h=new ae({camera:d,sceneParams:n}),u=h.scene,p=new re({width:o,height:c,scene:u,camera:d,isdev:e,rendererParams:R(b({},s),{antialias:!1})});this.gui&&p.setGui(this.gui);const f=p.renderer;t&&h.addAxesHelper(),this.sceneController=h,this.rendererController=p,this.cameraController=a,r.appendChild(f.domElement)}initComposer(){const{bloom:r,bloomParams:e,crossOpacity:t,renderer:s,multisampling:n,passes:i}=this.options;let{antialias:o}=s;o==="msaa"&&!j&&(o=!1,console.warn("MSAA is not supported on this browser"));const c=new ue({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:o==="msaa"?n:0,type:l.UnsignedByteType,encoding:s.outputEncoding}});this.composerController=c,r&&(c.addBloomPass(e),this.gui&&c.addBloomGui(this.gui)),o==="fxaa"&&c.addFXAAPass(),t&&c.addCrossFadePass(),i&&i.forEach(a=>{c.finalComposer.addPass(a)}),c.addCopyPass()}get opacity(){const{crossFadePass:r}=this.composerController;return r?r.fullscreenMaterial.uniforms.ratio.value:1}set opacity(r){const{crossFadePass:e}=this.composerController;if(!e){console.warn("err:pencil.options.crossOpacity");return}e.fullscreenMaterial.uniforms.ratio.value=r}initCSSRenderer(){const{container:r,css2DRenderer:e,css3DRenderer:t,css2DRendererParams:s,css3DRendererParams:n}=this.options;if(e||t){const i=new le(r);e&&i.addRenderer("css2d",s),t&&i.addRenderer("css3d",n),this.cssRendererController=i}}initControl(){const{control:r,controlParams:e}=this.options;if(r){const t=new ce({camera:this.camera,controlParams:{domElement:(e==null?void 0:e.domElement)||this.renderer.domElement},customControl:typeof r=="boolean"?void 0:r});this.controlController=t}}getSize(){const{container:r}=this.options;return{width:r.offsetWidth,height:r.offsetHeight}}initResizeObserver(){const{container:r}=this.options;if(this.resizeObserver)return;const e=new ResizeObserver(t=>{for(const s of t){const n=s.contentRect;this.handeleResize(n.width,n.height),this.render()}});e.observe(r),this.resizeObserver=e}handeleResize(r,e,t=!0){const{rendererController:s,cameraController:n,composerController:i,cssRendererController:o}=this;n==null||n.setSize(r,e),s==null||s.setSize(r,e),i==null||i.setSize(r,e),o==null||o.setSize(r,e),this.installPlugins.forEach((c,a)=>{var d;(d=a.setSize)==null||d.call(a,r,e)}),t&&this.event.emit("resize",{width:r,height:e})}pick(r,e,t=!1){const{raycaster:s,options:n}=this,{container:i}=n,o=new l.Vector2,c=i.getBoundingClientRect();if(o.x=(r.clientX-c.left)/(c.right-c.left)*2-1,o.y=-((r.clientY-c.top)/(c.bottom-c.top))*2+1,this.camera&&this.scene){s.setFromCamera(o,this.camera);const a=s.intersectObjects(e||this.scene.children,t);if(a.length)return{object:a[0].object,intersects:a}}}render(){var o,c,a,d,h;const{renderer:r,scene:e,camera:t,clock:s}=this;if(!r||!e||!t||this.options.staticRender&&!this.cameraController.checkCameraChange())return;const n=s.getDelta(),i=s.getElapsedTime();A.update(),(o=this.controlController)==null||o.update(),this.installPlugins.forEach((u,p)=>{var f;(f=p.update)==null||f.call(p,n,i)}),(c=this.composerController)!=null&&c.active?this.composerController.render():(a=this.rendererController)==null||a.render(),(d=this.cssRendererController)==null||d.render(e,t),(h=this.stats)==null||h.update(),this.event.emit("render",{delta:n,elapsed:i})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}dispose(){var r,e,t,s,n,i,o;this.stop(),A.removeAll(),this.handeleResize(0,0),(r=this.resizeObserver)==null||r.unobserve(this.options.container),this.installPlugins.forEach((c,a)=>{var d;(d=a.dispose)==null||d.call(a)}),(e=this.controlController)==null||e.dispose(),(t=this.cssRendererController)==null||t.dispose(),(s=this.sceneController)==null||s.dispose(),(n=this.composerController)==null||n.dispose(),(i=this.rendererController)==null||i.dispose(),this.controlController=void 0,this.cssRendererController=void 0,(o=this.gui)==null||o.destroy(),this.event.removeAllListeners(),this.installPlugins.clear()}};let O=G;O.options={isdev:S,stats:S,gui:S,axesHelper:S,control:S,resizeObserver:!0,renderer:R(b({},se),{antialias:j?"msaa":"fxaa"}),staticRender:!1,multisampling:4,scene:ie,camera:oe,bloom:!1,bloomParams:me,crossOpacity:!1,css2DRenderer:!1,css2DRendererParams:b({},T),css3DRenderer:!1,css3DRendererParams:b({},T)};exports.BaseObject=te.BaseObject;exports.GUIObject=y;exports.Pencil=O;exports.default=O;